有没有大姥帮我看一下过不去的问题
D题
#include <iostream> #include <cstring> #include <algorithm> using namespace std; int map[18][18]; int main() { for(int i=0;i<=16;i++){ map[i][0]=-1; map[0][i]=-1; map[i][20]=-1; map[20][i]=-1; } int t; cin>>t; while(t--) { bool win=false; for(int i=1;i<=15;i++) { for(int j=1;j<=15;j++) { int shu; scanf("%1d",&shu); map[i][j]=shu; } } for(int i=1;i<=15;i++) { for(int j=1;j<=15;j++) { if(win) { break; } else if(map[i][j]==1) { for(int k=1;k<4;k++) { if(map[i][j+k]==1)//横着向右遍历三个,观察是否有即将胜利的条件 { if(k==3&&(map[i][j-1]==0)||(map[i][j+4]==0)) { win=true; } } else{ break; } } if(win) { break; } for(int k=1;k<4;k++) { if(map[i+k][j]==1)//竖着向下遍历三个,观察是否有即将胜利的条件 { if(k==3&&((map[i-1][j]==0)||(map[i+4][j]==0))) { win=true; } } else{ break; } } if(win) { break; } for(int k=1;k<4;k++) { if(map[i+k][j-k]==1)//斜着向左下遍历三个,观察是否有即将胜利的条件 { if(k==3&&((map[i-1][j+1]==0)||(map[i+4][j-4]==0))) { win=true; } } else{ break; } } if(win) { break; } for(int k=1;k<4;k++) { if(map[i+k][j+k]==1)//斜着向右下遍历三个,观察是否有即将胜利的条件 { if(k==3&&((map[i-1][j-1]==0)||(map[i+4][j+4]==0))) { win=true; } } else{ break; } } }//为1进入的 } }//for循环 if(!win) { cout<<"No"<<endl; } else{ cout<<"Yes"<<endl; } } }
E题
#include <iostream> #include <cstring> #include <algorithm> #include<vector> using namespace std; int main() { int n; cin>>n; vector<int>a; for(int i=1;i<=n;i++) { int p; cin>>p; a.push_back(p); } sort(a.begin(),a.end(),greater<int>()); int money=a[0]; int maxx=a[0],minn=a[0]; for(int i=1;i<n;i++) { money=a[i]*(i+1); if(maxx<=money) { maxx=money; minn=a[i]; } } cout<<maxx<<" "<<minn; return 0; }
J题
暴力空间换时间
#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N=100010; int a[N],b[N],c[N],d[N],e[N],f[N],g[N],h[N],i[N],j[N],k[N],l[N],m[N],n[N],o[N],p[N],q[N],r[N],s[N]; int t[N],u[N],v[N],w[N],x[N],y[N],z[N]; int aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo,pp,qq,rr,ss,tt,uu,vv,ww,xx,yy,zz; int main() { int n1,m1; cin>>n1>>m1; string S; cin>>S; for(int in=0;in<S.size();in++) { if(S[in]=='a') { a[in]=++aa; } else { a[in]=a[in-1]; } if(S[in]=='b') { b[in]=++bb; } else { b[in]=b[in-1]; } if(S[in]=='c') { c[in]=++cc; } else { c[in]=c[in-1]; } if(S[in]=='d') { d[in]=++dd; } else { d[in]=d[in-1]; } if(S[in]=='e') { e[in]=++ee; } else { e[in]=e[in-1]; } if(S[in]=='f') { f[in]=++ff; } else { f[in]=f[in-1]; } if(S[in]=='g') { g[in]=++gg; } else { g[in]=g[in-1]; } if(S[in]=='h') { h[in]=++hh; } else { h[in]=h[in-1]; } if(S[in]=='i') { i[in]=++ii; } else { i[in]=i[in-1]; } if(S[in]=='g') { g[in]=++gg; } else { g[in]=g[in-1]; } if(S[in]=='k') { k[in]=++kk; } else { k[in]=k[in-1]; } if(S[in]=='l') { l[in]=++ll; } else { l[in]=l[in-1]; } if(S[in]=='m') { m[in]=++mm; } else { m[in]=m[in-1]; } if(S[in]=='n') { n[in]=++nn; } else { n[in]=n[in-1]; } if(S[in]=='o') { o[in]=++oo; } else { o[in]=o[in-1]; } if(S[in]=='p') { p[in]=++pp; } else { p[in]=p[in-1]; } if(S[in]=='q') { q[in]=++qq; } else { q[in]=q[in-1]; } if(S[in]=='r') { r[in]=++rr; } else { r[in]=r[in-1]; } if(S[in]=='s') { s[in]=++ss; } else { s[in]=s[in-1]; } if(S[in]=='t') { t[in]=++tt; } else { t[in]=t[in-1]; } if(S[in]=='u') { u[in]=++uu; } else { u[in]=u[in-1]; } if(S[in]=='v') { v[in]=++vv; } else { v[in]=v[in-1]; } if(S[in]=='w') { w[in]=++ww; } else { w[in]=w[in-1]; } if(S[in]=='x') { x[in]=++xx; } else { x[in]=x[in-1]; } if(S[in]=='y') { y[in]=++yy; } else { y[in]=y[in-1]; } if(S[in]=='z') { z[in]=++zz; } else { z[in]=z[in-1]; } } while(m1--) { int l1,r1; cin>>l1>>r1; l1--,r1--; int maxx=0; maxx=max({a[r1]-a[l1-1],b[r1]-b[l1-1],c[r1]-c[l1-1],d[r1]-d[l1-1],e[r1]-e[l1-1],f[r1]-f[l1-1],g[r1]-g[l1-1],h[r1]-h[l1-1],i[r1]-i[l1-1],g[r1]-g[l1-1],k[r1]-k[l1-1],l[r1]-l[l1-1],m[r1]-m[l1-1],n[r1]-n[l1-1],o[r1]-o[l1-1],p[r1]-p[l1-1],q[r1]-q[l1-1],r[r1]-r[l1-1],s[r1]-s[l1-1],t[r1]-t[l1-1],u[r1]-u[l1-1],v[r1]-v[l1-1],w[r1]-w[l1-1],x[r1]-x[l1-1],y[r1]-y[l1-1],z[r1]-z[l1-1]}); cout<<r1-l1+1-maxx<<endl; } return 0; }