摘要:
题目 学习博客 题解 #include<bits/stdc++.h> using namespace std; const int N=100002; int mp[99],ans,T,f[N],fail[N],ch[N][4],sz,q[N],h,t,len[N],s[N],n,las[N],la 阅读全文
摘要:
题目 题面值得学习一下 多维前缀和: for (i=1;i<=n;i++) for (j=1;j<=n;j++) for (k=1;k<=n;k++) a[i][j][k]+=a[i][j][k-1]; for (i=1;i<=n;i++) for (j=1;j<=n;j++) for (k=1;k 阅读全文
摘要:
Description 求与S循环同构的所有字符串中字典序最小的字符串 Solution 考虑对于一对字符串 A , B A,B A,B, 它们在原字符串 S S S 中的起始位置分别为 i , j i,j i,j,且它们的前 k k k 个字符均相同,即 S [ i . . . i + k − 1 阅读全文
摘要:
题目 n个人排成一个环形,每个人要从c种颜色中选择一个。牛牛希望相邻的人选择的颜色是不同的,问有多少种方案。输出方案数对10007取模的结果。 注:人是有顺序的,环旋转同构算不同的方案。 R n m = ( m − 1 ) n + ( m − 1 ) ⋅ ( − 1 ) n R_n^m=(m-1)^ 阅读全文
摘要:
题目 Solution 首先想到的是这类题可以用堆来做 假设当前最小值是 m i n min min,遇到 x x x,比 m i n min min小,肯定不会选择卖,直接放堆里 如果比 m i n min min大,默认卖掉+反悔操作 卖掉很简单, a n s + = x − m i n ans 阅读全文
摘要:
题目 题解 #include<bits/stdc++.h> using namespace std; const int N=11000002; int i,j,ans,k,rad[N<<1],len; char s[N<<1],s1[N]; int main(){ scanf("%s",s1+1) 阅读全文
摘要:
题目 看了代码就知道怎么做了。。。 #include<bits/stdc++.h> using namespace std; const int M=1e9+7; int k,p,s,m; int pw(int x,int y){ int z=1; for (;y;y>>=1,x=1ll*x*x%M 阅读全文
摘要:
题目 和阿狸的打字机很像,差不多的套路 #include<bits/stdc++.h> using namespace std; #define mid ((l+r)>>1) const int N=200002,M=4000002; struct node{ int to,ne; }e[N]; i 阅读全文