日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

luogu P3234 [HNOI2014]抄卡组

發布時間:2024/10/12 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 luogu P3234 [HNOI2014]抄卡组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳送門

nmdwsm

自己看吧,不想寫了qwq

垃圾代碼如下 和題解完全不一樣

#define LL long long #define uLL unsigned long long #define il inline #define re registerusing namespace std; const int M=1e7+10,N=1e5+10; il int rd() {int x=0,w=1;char ch=0;while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}return x*w; } uLL hb[M],bb[M],bs=2333; vector<char> cc[N]; int l[N],r[N],s[N]; bool v[N]; string fk;int main() {freopen("3574.in","r",stdin);freopen("3574.out","w",stdout);bb[0]=1;for(int i=1;i<M-1;++i) bb[i]=bb[i-1]*bs;int T=rd();while(T--){int n=rd();for(int i=0;i<=n;++i) v[i]=0;int m=0;char ch;/*while(233){ch=getchar();if(ch=='\n'||ch==-1){++m;if(m>=n) break;l[m]=0,r[m]=-1,cc[m].clear();}else ++r[m],cc[m].push_back(ch);}*/for(int i=0;i<n;++i){l[i]=0,cc[i].clear();cin>>fk;//int nmd=((int)fk.length())-1;r[i]=((int)fk.length())-1;for(int j=l[i];j<=r[i];++j) cc[i].push_back(fk[j]);}m=n;while(233){int i=0;ch=0;while(i<m){int j=i;if(l[j]>r[j]) break;if(cc[j][l[j]]=='*') break;if(!ch||ch==cc[j][l[j]]) ch=cc[j][l[j]];else break;++i;}if(i<m||!ch) break;for(int j=0;j<m;++j) ++l[j];}while(233){int i=0;ch=0;while(i<m){int j=i;if(l[j]>r[j]) break;if(cc[j][r[j]]=='*') break;if(!ch||ch==cc[j][r[j]]) ch=cc[j][r[j]];else break;++i;}if(i<m||!ch) break;for(int j=0;j<m;++j) --r[j];}uLL ha=0;int h=0,px=0,py=1;while(h<n){uLL hh=0;bool o=0;for(int i=l[h];i<=r[h];++i){if(cc[h][i]!='*') hh=hh*bs+cc[h][i];else o=1;}if(o) {++h;continue;}v[h]=1;if(!px||ha==hh) px=1,ha=hh;else py=0;++h;}if(!py) {puts("N");continue;}if(px){int i,ma=0;for(i=0;i<n;++i)if(v[i]) {swap(cc[i],cc[0]),swap(v[i],v[0]),swap(l[i],l[0]),swap(r[i],r[0]);break;}for(i=0;i<n;++i) ma=max(ma,r[i]);hb[0]=cc[0][0];for(i=1;i<=r[0];++i) hb[i]=hb[i-1]*bs+cc[0][i];for(i=r[0]+1;i<=ma;++i) hb[i]=0;for(i=1;i<n;++i){if(v[i]) continue;ha=0;int j=l[0],k=r[0],ll=0;while(l[i]<=r[i]&&j<=k&&cc[i][l[i]]==cc[0][j]) ++l[i],++j;while(l[i]<=r[i]&&j<=k&&cc[i][r[i]]==cc[0][k]) --r[i],--k;if(l[i]<=r[i]&&(cc[i][l[i]]!='*'||cc[i][r[i]]!='*')) break;while(l[i]<=r[i]&&j<=k){if(cc[i][l[i]]!='*') ++ll,++j,ha=ha*bs+cc[i][l[i]];else{if(ll){while(j<=k&&ha!=hb[j]-hb[j-ll]*bb[ll]) ++j;if(j>k) l[i]=-233;}ll=0,ha=0;}++l[i];}while(l[i]>=0&&l[i]<=r[i]&&cc[i][l[i]]=='*') ++l[i];if(l[i]<=r[i]) break;}puts(i>=n?"Y":"N");continue;}for(int i=0;i<n;++i) s[i]=i;m=n;while(233){int i=0;ch=0;while(i<m){int j=s[i];if(l[j]>r[j]) break;if(cc[j][l[j]]=='*') swap(s[i],s[m-1]),--m,--i;else if(!ch||ch==cc[j][l[j]]) ch=cc[j][l[j]];else break;++i;}if(i<m||!ch) break;for(int j=0;j<m;++j) ++l[s[j]];}for(int i=0;i<n;++i) s[i]=i;m=n;while(233){int i=0;ch=0;while(i<m){int j=s[i];if(l[j]>r[j]) break;if(cc[j][r[j]]=='*') swap(s[i],s[m-1]),--m,--i;else if(!ch||ch==cc[j][r[j]]) ch=cc[j][r[j]];else break;++i;}if(i<m||!ch) break;for(int j=0;j<m;++j) --r[s[j]];}int c1=0,c2=0;for(int i=0;i<n;++i) c1+=l[i]>r[i]||v[i],c2+=l[i]<=r[i]&&cc[i][l[i]]=='*'&&cc[i][r[i]]=='*';puts(c1==n||c2==n?"Y":"N");}return 0; }

md我是真的\(**\),分類討論沒考慮完全,數組開小,局部變量開的過大,沒清空數組,沒考慮空行,然后寫了一萬年,,,

8說了

轉載于:https://www.cnblogs.com/smyjr/p/10412999.html

總結

以上是生活随笔為你收集整理的luogu P3234 [HNOI2014]抄卡组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。