摘要:
http://poj.org/problem?id=2983题意:给出M条信息,判断这些信息的正确性。(1)V A B :表示A,B之间的距离>=1; (2)P A B X :表示A B之间的距离为x。思路:dis[i]表示i到原点的距离,由(1)知 dis[A]A之间有一条边,权值为-1;由(2)知: dis[A]B的权值为-x,B->A的权值为x。增加一个超级源点,与所有的点相连且权值为0.建图,spfa判断是否有负环(即判断进站次数,若大于点数则存在负环)。若存在负环则信息为假,否则为真。 1 #include 2 #include 3 #include 4 using na 阅读全文
posted @ 2014-02-20 21:28
N_ll
阅读(331)
评论(0)
推荐(0)
摘要:
http://poj.org/problem?id=2406题意:计算一个串中重复因子出现的最多次数,即最多的循环节数。 1 #include 2 #include 3 const int N=1000010; 4 char str[N]; 5 int next[N]; 6 7 int get_next(char *s) 8 { 9 int j = 0,k = -1;10 int len=strlen(s);11 next[0]=-1;12 while(j<len)13 {14 if(k==-1||s[k]==s[j])15 ... 阅读全文
posted @ 2014-02-20 19:39
N_ll
阅读(188)
评论(0)
推荐(0)
摘要:
http://poj.org/problem?id=3368题意:给出一个非降序排列的整数数组,对于询问(i,j),输出区间[i,j]中出现最多的值的次数。思路:经典的RMQ,不过我用线段树做的。首先要离散化,因为是非降序的,所以相同的数是连续的,可以将相同的数分在同一个块中,将块中的信息存储起来,然后将其看成一个点,就可以用线段树进行查询了。 1 #include 2 #include 3 #include 4 using namespace std; 5 const int N=1000010; 6 struct node 7 { 8 int l,r; 9 int M... 阅读全文
posted @ 2014-02-20 16:45
N_ll
阅读(462)
评论(0)
推荐(0)
摘要:
http://poj.org/problem?id=3264题意:n个数,q个询问,输出[l,r]中最大值与最小值的差。 1 #include 2 #include 3 #include 4 using namespace std; 5 const int N=1000010; 6 struct node 7 { 8 int l,r; 9 int Max,Min;10 } Tree[N*4];11 int h[N],max1=0,min1=N;12 void build(int l,int r,int rt)13 {14 Tree[rt].l = l;15 ... 阅读全文
posted @ 2014-02-20 13:08
N_ll
阅读(213)
评论(0)
推荐(0)
摘要:
http://poj.org/problem?id=2750题意:在一个圈中取若干个相邻的数,求他们的最大序列和。不能够同时取所有的数。看了一篇解题报告写的很详细。。http://blog.csdn.net/non_cease/article/details/7437690 1 #include 2 #include 3 #include 4 #include 5 const int N=100010; 6 using namespace std; 7 struct node 8 { 9 int l,r,sum,minsum,maxsum;10 int lmax,rma... 阅读全文
posted @ 2014-02-20 10:12
N_ll
阅读(307)
评论(0)
推荐(0)

浙公网安备 33010602011771号