POJ 2442
摘要:直接用优先队列bfs+set判重水过,需要注意的是,因为m<=100,所以用short就可以不超内存了= =!View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<queue> 5 #include<set> 6 using namespace std; 7 int ar[105][2005],n,m; 8 struct data 9 {10 short p[105];11 int sum;12 bool operato
阅读全文
HDOJ 4267
摘要:让人一看就知道是线段树的题,不过具体操作起来就比较DT了。我的做法是每个结点保存以这个区间开头的每隔多少个数加上一个数,说白了,就是题目说的第一种操作的k,c,k<=10,所以一个s[11]数组可以解决。然后每个1 a b k c 操作,就是对区间[a,b]的s[k]加上一个c,若是线段树中存在[a,b]直接加上即可,否则,左孩子仍然照加,右孩子就需要找第一个属于[a,b]区间且i-a%k==0的数,变成给[i,b]的s[k]加上c计算某个点的值时,需要把涵盖这个点的所有线段上的s数组对它的影响算进去,即看pos-left mod i是否等于0。View Code 1 #include&
阅读全文
POJ 3450
摘要:二分长度,枚举字串,KMP判断。View Code 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 char s[4005][205]; 6 char ans[205]; 7 int next[205],n; 8 void getnext(char sr[]) 9 {10 int i,j;11 i=0;j=-1;next[0]=-1;12 for(;sr[i]!='\0';)13 {14 if(j==-1||sr[i]=
阅读全文