https://www.luogu.com.cn/training/103#problems

P1428 小鱼比可爱

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e5+10;
  4. int a[N],n;
  5. int main(void)
  6. {
  7. cin>>n;
  8. for(int i=0;i<n;i++) cin>>a[i];
  9. for(int i=0;i<n;i++)
  10. {
  11. int cnt=0;
  12. for(int j=0;j<i;j++)
  13. {
  14. if(a[i]>a[j]) cnt++;
  15. }
  16. cout<<cnt<<" ";
  17. }
  18. return 0;
  19. }

P1427 小鱼的数字游戏

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e5+10;
  4. int a[N],cnt;
  5. int main(void)
  6. {
  7. while(cin>>a[cnt++])
  8. if(a[cnt-1]==0) break;
  9. for(int i=cnt-2;i>=0;i--) cout<<a[i]<<" ";
  10. return 0;
  11. }

P5727 【深基5.例3】冰雹猜想

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(void)
  4. {
  5. int n; cin>>n;
  6. vector<int>ve; ve.push_back(n);
  7. while(n!=1)
  8. {
  9. if(n%2==0) n=n/2;
  10. else n=n*3+1;
  11. ve.push_back(n);
  12. }
  13. for(int i=ve.size()-1;i>=0;i--) cout<<ve[i]<<" ";
  14. return 0;
  15. }

P1047 [NOIP2005 普及组] 校门外的树

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e5+10;
  4. int a[N],n,m;
  5. int main(void)
  6. {
  7. cin>>n>>m;
  8. while(m--)
  9. {
  10. int l,r; cin>>l>>r;
  11. l++,r++;
  12. a[l]+=1,a[r+1]-=1;
  13. }
  14. int ans=n+1;
  15. for(int i=1;i<=n+1;i++)
  16. {
  17. a[i]+=a[i-1];
  18. if(a[i]) ans--;
  19. }
  20. cout<<ans;
  21. return 0;
  22. }

P5728 【深基5.例5】旗鼓相当的对手

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e4+10;
  4. int a[N],b[N],c[N];
  5. int n,cnt;
  6. int main(void)
  7. {
  8. cin>>n;
  9. for(int i=0;i<n;i++) cin>>a[i]>>b[i]>>c[i];
  10. for(int i=0;i<n;i++)
  11. {
  12. for(int j=i+1;j<n;j++)
  13. {
  14. int flag=1;
  15. if(abs(a[i]-a[j])>5) flag=0;
  16. if(abs(b[i]-b[j])>5) flag=0;
  17. if(abs(c[i]-c[j])>5) flag=0;
  18. if(abs(a[i]+b[i]+c[i]-a[j]-b[j]-c[j])>10) flag=0;
  19. if(flag) cnt++;
  20. }
  21. }
  22. cout<<cnt;
  23. return 0;
  24. }

P5729 【深基5.例7】工艺品制作

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=110;
  4. int a[N][N][N],n,m,k;
  5. int t;
  6. int main(void)
  7. {
  8. cin>>n>>m>>k;
  9. cin>>t;
  10. while(t--)
  11. {
  12. int l1,l2,l3,r1,r2,r3; cin>>l1>>l2>>l3>>r1>>r2>>r3;
  13. for(int i=l1;i<=r1;i++)
  14. for(int j=l2;j<=r2;j++)
  15. for(int z=l3;z<=r3;z++)
  16. a[i][j][z]=1;
  17. }
  18. int cnt=n*m*k;
  19. for(int i=1;i<=n;i++)
  20. for(int j=1;j<=m;j++)
  21. for(int z=1;z<=k;z++) if(a[i][j][z]) cnt--;
  22. cout<<cnt;
  23. return 0;
  24. }

P2550 [AHOI2001]彩票摇奖

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e3+10;
  4. int a[N],st[N],ans[N],n;
  5. int main(void)
  6. {
  7. cin>>n;
  8. for(int i=0;i<7;i++) cin>>a[i],st[a[i]]=1;
  9. while(n--)
  10. {
  11. int cnt=0;
  12. for(int i=0;i<7;i++)
  13. {
  14. int x; cin>>x;
  15. if(st[x]) cnt++;
  16. }
  17. ans[cnt]++;
  18. }
  19. for(int i=7;i>=1;i--) cout<<ans[i]<<" ";
  20. return 0;
  21. }

P2615 [NOIP2015 提高组] 神奇的幻方

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=45;
  4. int a[N][N],n;
  5. int main(void)
  6. {
  7. cin>>n;
  8. a[0][n/2]=1;
  9. int k=2,x=0,y=n/2;
  10. while(k<=n*n)
  11. {
  12. if( x==0 && y!=(n-1) )
  13. {
  14. x=n-1,y++;
  15. a[x][y]=k++;
  16. }else if( x!=0 && y==(n-1) )
  17. {
  18. x--,y=0;
  19. a[x][y]=k++;
  20. }else if( x==0 && y==(n-1))
  21. {
  22. x++;
  23. a[x][y]=k++;
  24. }else if( x!=0 && y!=(n-1) && !a[x-1][y+1])
  25. {
  26. x--,y++;
  27. a[x][y]=k++;
  28. }else
  29. {
  30. x++;
  31. a[x][y]=k++;
  32. }
  33. }
  34. for(int i=0;i<n;i++)
  35. {
  36. for(int j=0;j<n;j++) cout<<a[i][j]<<" ";
  37. puts("");
  38. }
  39. return 0;
  40. }

P5730 【深基5.例10】显示屏

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. string a[10][5]={
  4. {"XXX","X.X","X.X","X.X","XXX"},//0
  5. {"..X","..X","..X","..X","..X"},//1
  6. {"XXX","..X","XXX","X..","XXX"},//2
  7. {"XXX","..X","XXX","..X","XXX"},//3
  8. {"X.X","X.X","XXX","..X","..X"},//4
  9. {"XXX","X..","XXX","..X","XXX"},//5
  10. {"XXX","X..","XXX","X.X","XXX"},//6
  11. {"XXX","..X","..X","..X","..X"},//7
  12. {"XXX","X.X","XXX","X.X","XXX"},//8
  13. {"XXX","X.X","XXX","..X","XXX"}//9
  14. };//2
  15. int main(void)
  16. {
  17. int n; cin>>n;
  18. string s; cin>>s;
  19. vector<string>ve;
  20. for(int i=0;i<5;i++)
  21. {
  22. string temp;
  23. for(int j=0;j<s.size();j++)
  24. {
  25. temp=temp+a[s[j]-'0'][i];
  26. if(j!=(s.size()-1)) temp+='.';
  27. }
  28. ve.push_back(temp);
  29. }
  30. for(int i=0;i<ve.size();i++) cout<<ve[i]<<'\n';
  31. return 0;
  32. }

P1554 梦中的统计

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[15];
  4. int main(void)
  5. {
  6. int l,r; cin>>l>>r;
  7. for(int i=l;i<=r;i++)
  8. {
  9. int temp=i;
  10. while(temp)
  11. {
  12. a[temp%10]++;
  13. temp/=10;
  14. }
  15. }
  16. for(int i=0;i<=9;i++) cout<<a[i]<<" ";
  17. return 0;
  18. }

P2141 [NOIP2014 普及组] 珠心算测验

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[105],n;
  4. int main(void)
  5. {
  6. cin>>n;
  7. for(int i=0;i<n;i++) cin>>a[i];
  8. int cnt=0;
  9. for(int i=0;i<n;i++)
  10. {
  11. int flag=0;
  12. for(int j=0;j<n;j++)
  13. for(int z=0;z<n;z++)
  14. if(i!=j&&i!=z&&j!=z&&a[j]+a[z]==a[i]) flag=1;
  15. if(flag) cnt++;
  16. }
  17. cout<<cnt;
  18. return 0;
  19. }
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=150;
  4. int a[N],n;
  5. map<int,int>mp;
  6. int main(void)
  7. {
  8. cin>>n;
  9. for(int i=0;i<n;i++) cin>>a[i],mp[a[i]]++;
  10. int ans=0;
  11. for(int i=0;i<n;i++)
  12. for(int j=i+1;j<n;j++)
  13. if(mp[a[i]+a[j]]) ans++,mp[a[i]+a[j]]--;
  14. cout<<ans;
  15. return 0;
  16. }

P1614 爱与愁的心痛

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e5+10;
  4. int a[N],s[N],n,m;
  5. int main(void)
  6. {
  7. cin>>n>>m;
  8. for(int i=1;i<=n;i++) cin>>a[i],s[i]=s[i-1]+a[i];
  9. int ans=1e9;
  10. for(int i=1;i+m-1<=n;i++)
  11. {
  12. int l=i,r=i+m-1;
  13. ans=min(ans,s[r]-s[l-1]);
  14. }
  15. cout<<ans;
  16. return 0;
  17. }

P2911 [USACO08OCT]Bovine Bones G

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[305],n,m,k;
  4. int main(void)
  5. {
  6. cin>>n>>m>>k;
  7. for(int i=1;i<=n;i++)
  8. for(int j=1;j<=m;j++)
  9. for(int z=1;z<=k;z++)
  10. a[i+j+z]++;
  11. int index=0,ans=0;
  12. for(int i=1;i<=n+m+k;i++) if(a[i]>ans) ans=a[i],index=i;
  13. cout<<index;
  14. return 0;
  15. }

P1161 开灯

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=2*1e6+10;
  4. int st[N],n;
  5. int main(void)
  6. {
  7. cin>>n;
  8. while(n--)
  9. {
  10. double a;
  11. int t; cin>>a>>t;
  12. for(int i=1;i<=t;i++)
  13. {
  14. st[(int)(a*i)]^=1;
  15. }
  16. }
  17. for(int i=1;i<N;i++)
  18. {
  19. if(st[i])
  20. {
  21. cout<<i;
  22. return 0;
  23. }
  24. }
  25. return 0;
  26. }

P5731 【深基5.习6】蛇形方阵

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[15][15],n;
  4. int dx[4]={0,1,0,-1};
  5. int dy[4]={1,0,-1,0};
  6. int main(void)
  7. {
  8. cin>>n;
  9. int stx=0,sty=0,d=0,k=1;
  10. while(k<=n*n)
  11. {
  12. a[stx][sty]=k++;
  13. int tempx=stx+dx[d],tempy=sty+dy[d];
  14. if(tempx<0||tempx>=n||tempy<0||tempy>=n||a[tempx][tempy]) d=(d+1)%4;
  15. stx=stx+dx[d],sty=sty+dy[d];
  16. }
  17. for(int i=0;i<n;i++)
  18. {
  19. for(int j=0;j<n;j++) printf(" %2d",a[i][j]);
  20. puts("");
  21. }
  22. return 0;
  23. }

P5732 【深基5.习7】杨辉三角

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[25][25],n;
  4. int main(void)
  5. {
  6. cin>>n;
  7. a[1][1]=1;
  8. for(int i=2;i<=n;i++)
  9. for(int j=1;j<=i;j++)
  10. a[i][j]=a[i-1][j]+a[i-1][j-1];
  11. for(int i=1;i<=n;i++)
  12. {
  13. for(int j=1;j<=i;j++) cout<<a[i][j]<<" ";
  14. puts("");
  15. }
  16. return 0;
  17. }

P1789 【Mc生存】插火把

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=150;
  4. int a[N][N],n,m,k;
  5. int main(void)
  6. {
  7. cin>>n>>m>>k;
  8. while(m--)
  9. {
  10. int x,y; cin>>x>>y;
  11. for(int i=max(1,x-2);i<=min(n,x+2);i++) a[i][y]=1;
  12. for(int i=max(1,y-2);i<=min(n,y+2);i++) a[x][i]=1;
  13. for(int i=x-1;i<=x+1;i++)
  14. for(int j=y-1;j<=y+1;j++)
  15. if(i>=1&&i<=n&&j>=1&&j<=n) a[i][j]=1;
  16. }
  17. while(k--)
  18. {
  19. int x,y; cin>>x>>y;
  20. for(int i=x-2;i<=x+2;i++)
  21. for(int j=y-2;j<=y+2;j++)
  22. if(i>=1&&i<=n&&j>=1&&j<=n) a[i][j]=1;
  23. }
  24. int cnt=0;
  25. for(int i=1;i<=n;i++)
  26. for(int j=1;j<=n;j++) if(!a[i][j]) cnt++;
  27. cout<<cnt;
  28. return 0;
  29. }

P1319 压缩技术

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(void)
  4. {
  5. int n,x,flag=0; cin>>n;
  6. string s;
  7. while(cin>>x)
  8. {
  9. for(int i=1;i<=x;i++) s+=to_string(flag);
  10. flag=flag^1;
  11. }
  12. for(int i=0;i<s.size();i++)
  13. {
  14. cout<<s[i];
  15. if(i%n==(n-1)) puts("");
  16. }
  17. return 0;
  18. }

P1320 压缩技术(续集版)

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. string a,b;
  4. int main(void)
  5. {
  6. while(cin>>b) a+=b;
  7. cout<<sqrt(a.size())<<" ";
  8. if(a[0]=='1') cout<<0<<" ";
  9. for(int i=0;i<a.size();i++)
  10. {
  11. int j=i;
  12. while(j+1<a.size()&&a[i]==a[j+1]) j++;
  13. cout<<j-i+1<<" ";
  14. i=j;
  15. }
  16. return 0;
  17. }

P1205 [USACO1.2] 方块转换 Transformations

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=25;
  4. string s[N];
  5. int n,a[N][N],b[N][N],c[N][N],d[N][N];
  6. int f1()
  7. {
  8. for(int i=0;i<n;i++)
  9. for(int j=0;j<n;j++)
  10. c[j][n-1-i]=a[i][j];
  11. for(int i=0;i<n;i++)
  12. for(int j=0;j<n;j++)
  13. if(c[i][j]!=b[i][j]) return 0;
  14. return 1;
  15. }
  16. int f2()
  17. {
  18. for(int i=0;i<n;i++)
  19. for(int j=0;j<n;j++)
  20. c[j][n-1-i]=a[i][j];
  21. memcpy(d,c,sizeof c);
  22. for(int i=0;i<n;i++)
  23. for(int j=0;j<n;j++)
  24. c[j][n-1-i]=d[i][j];
  25. for(int i=0;i<n;i++)
  26. for(int j=0;j<n;j++)
  27. if(c[i][j]!=b[i][j]) return 0;
  28. return 1;
  29. }
  30. int f3()
  31. {
  32. for(int i=0;i<n;i++)
  33. for(int j=0;j<n;j++)
  34. c[j][n-1-i]=a[i][j];
  35. memcpy(d,c,sizeof c);
  36. for(int i=0;i<n;i++)
  37. for(int j=0;j<n;j++)
  38. c[j][n-1-i]=d[i][j];
  39. memcpy(d,c,sizeof c);
  40. for(int i=0;i<n;i++)
  41. for(int j=0;j<n;j++)
  42. c[j][n-1-i]=d[i][j];
  43. for(int i=0;i<n;i++)
  44. for(int j=0;j<n;j++)
  45. if(c[i][j]!=b[i][j]) return 0;
  46. return 1;
  47. }
  48. int f4()
  49. {
  50. memcpy(c,a,sizeof c);
  51. for(int i=0;i<n;i++)
  52. for(int j=0;j<n/2;j++)
  53. swap(c[i][j],c[i][n-1-j]);
  54. for(int i=0;i<n;i++)
  55. for(int j=0;j<n;j++)
  56. if(c[i][j]!=b[i][j]) return 0;
  57. return 1;
  58. }
  59. int f5()
  60. {
  61. memcpy(c,a,sizeof c);
  62. for(int i=0;i<n;i++)
  63. for(int j=0;j<n/2;j++)
  64. swap(c[i][j],c[i][n-1-j]);
  65. int temp[N][N]={0};
  66. memcpy(temp,a,sizeof a);
  67. memcpy(a,c,sizeof a);
  68. if(f1()|| f2() || f3())
  69. {
  70. memcpy(a,temp,sizeof a);
  71. return 1;
  72. }
  73. memcpy(a,temp,sizeof a);
  74. return 0;
  75. }
  76. int f6()
  77. {
  78. for(int i=0;i<n;i++)
  79. for(int j=0;j<n;j++)
  80. if(a[i][j]!=b[i][j]) return 0;
  81. return 1;
  82. }
  83. int main(void)
  84. {
  85. cin>>n;
  86. for(int i=0;i<n;i++)
  87. {
  88. cin>>s[i];
  89. for(int j=0;j<n;j++)
  90. if(s[i][j]=='-') a[i][j]=0;
  91. else a[i][j]=1;
  92. }
  93. for(int i=0;i<n;i++)
  94. {
  95. cin>>s[i];
  96. for(int j=0;j<n;j++)
  97. if(s[i][j]=='-') b[i][j]=0;
  98. else b[i][j]=1;
  99. }
  100. int flag=0,ans=7;
  101. if(!flag&&f1()) ans=1,flag=1;
  102. if(!flag&&f2()) ans=2,flag=1;
  103. if(!flag&&f3()) ans=3,flag=1;
  104. if(!flag&&f4()) ans=4,flag=1;
  105. if(!flag&&f5()) ans=5,flag=1;
  106. if(!flag&&f6()) ans=6,flag=1;
  107. cout<<ans;
  108. return 0;
  109. }