apio 反对称

这个题没想到后面还用二分(而且还有这种二分操作。。。。。) 我太弱了--------- (二分循环节出现位置) 好像可以用马拉车做,复杂度还更优一点。。。。 反正不会。。。。。 #include<cstdio> #include<cstring> #include<map> #include<string> #include<iostream> #include<cmath> #include<algorithm> using namespace std; //可以翻转 int k; int n; char a[500005]; long long pf[500005],has1[500005],has2[500005],has3[500005],p=23333,sum=0;//正着,反着 long cal1(int x,int y){ return has1[y]-has1[x-1]*pf[y-x+1]; } long cal2(int x,int y){ return has2[x]-has2[y+1]*pf[y-x+1]; } long cal3(int x,int y){ return has3[y]-has3[x-1]*pf[y-x+1]; } long long check(int x){ int l=1,r=min(x,n-x); while(l<=r){ int mid=(l+r)/2; //cout<<' '<<x-mid>>n; for(int i=0;i<n>>a[i]; if(a[i]=='1')k=i; } has1[0]=has2[n]=0; for(int i=1;i<=n;i++){ has1[i]=has1[i-1]*p+a[i-1]-'0'; } for(int i=n;i>=1;i--){ has2[i]=has2[i+1]*p+a[i-1]-'0'; } for(int i=1;i<=n;i++){ has3[i]=has3[i-1]*p+a[k]-'0'; } /*for(int i=1;i<=10;i++){ int l,r; cin>>l>>r; cout<</n></x-mid></algorithm></cmath></iostream></string></map></cstring></cstdio>
全部评论

相关推荐

能干的三文鱼刷了100道题:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
05-05 21:45
已编辑
广州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务