• AI智工作室11.19练习题解


    CodeForces - 710A 

     训练1(共12题) - Virtual Judge

     我的代码

    1. #include<iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. char arr[10][10],a;
    6. int b,c,k=0;
    7. cin>>a>>c; b=a-'a'+1;
    8. // cout<<b<<" "<<c<<endl;
    9. for(int i=0;i<=9;i++)
    10. {
    11. for(int j=0;j<=9;j++)
    12. {
    13. arr[i][j]='0';
    14. }
    15. }
    16. for(int i=1;i<=8;i++)
    17. {
    18. for(int j=1;j<=8;j++)
    19. {
    20. arr[i][j]='*';
    21. }
    22. }
    23. /* for(int i=0;i<=9;i++)
    24. {
    25. for(int j=0;j<=9;j++)
    26. {
    27. cout<<arr[i][j];
    28. }
    29. cout<<endl;
    30. }*/
    31. if(arr[b-1][c+1]=='*') k++;
    32. if(arr[b][c+1]=='*') k++;
    33. if(arr[b][c-1]=='*') k++;
    34. if(arr[b+1][c]=='*') k++;
    35. if(arr[b-1][c]=='*') k++;
    36. if(arr[b+1][c+1]=='*') k++;
    37. if(arr[b+1][c-1]=='*') k++;
    38. if(arr[b-1][c-1]=='*') k++;
    39. cout<<k<<endl;
    40. }

     陈杨的

    1. #include<stdio.h>
    2. int main(){
    3. char c;
    4. int d;
    5. int val=0;
    6. scanf("%c",&c);
    7. scanf("%d",&d);
    8. if(c=='a'||c=='h'){
    9. val+=1;
    10. }
    11. if(d==1||d==8){
    12. val+=1;
    13. }
    14. if(val==0){
    15. printf("8");
    16. }
    17. if(val==1){
    18. printf("5");
    19. }
    20. if(val==2){
    21. printf("3");
    22. }
    23. return 0;
    24. }//不在棋盘边上点 输出都是8
    25. //边上的点 除了四个角都是8-3
    26. //四个角的点8-3-2
    27. //坐标(x,y)里含a、h、18都不是中间的点 ,含一个是边上的点,含两个是四角的点

    CodeForces - 1257A 

    1. #include<iostream>
    2. using namespace std;
    3. #include<bits/stdc++.h>
    4. int main()
    5. {
    6. int k,n,x,a,b,j=0;
    7. cin>>k;
    8. while(k--)
    9. {
    10. cin>>n>>x>>a>>b;
    11. j=abs(a-b);
    12. if(x==0) cout<<j<<endl;
    13. else if(j==n-1)
    14. {cout<<n-1<<endl;
    15. continue;
    16. }
    17. else
    18. {
    19. if((j+x)<n-1)
    20. cout<<j+x<<endl;
    21. else cout<<n-1<<endl;
    22. }
    23. }
    24. }

     陈杨的

    1. #include<stdio.h>
    2. #include<math.h>
    3. int main(){
    4. int t;
    5. int n,x,a,b;
    6. int dist;
    7. scanf("%d",&t);
    8. while(t--){
    9. scanf("%d%d%d%d",&n,&x,&a,&b);
    10. dist=abs(a-b);
    11. dist+=x;
    12. if(dist>n-1){
    13. dist=n-1;
    14. }
    15. printf("%d\n",dist);
    16. }
    17. }
    18. //每次交换操作 位置能加一或减一
    19. //题干里的原话是“你能交换的次数”,可以理解为如果达到最远的距离就可以停止操作
    20. //一个if判断就能得出答案了,也就是判断一下操作x次+1后是不是两个人到达队伍两端

     H CodeForces - 988A 

    1. #include<iostream>
    2. #include<bits/stdc++.h>
    3. using namespace std;
    4. int main()
    5. {
    6. int n,k,a[9999]={0},b[9999],ai,j=0;
    7. cin>>n>>k;
    8. for(int i=0;i<n;i++)
    9. {
    10. cin>>ai;
    11. if(a[ai]==0)
    12. {
    13. a[ai]=1;b[j++]=i;
    14. }
    15. }
    16. if(j<k)cout<<"NO"<<endl;
    17. else
    18. {
    19. cout<<"YES"<<endl;
    20. for(int i=0;i<k;i++)
    21. {
    22. if(i==j-1)
    23. {
    24. cout<<b[i]+1<<" "; return 0;
    25. }
    26. else
    27. {
    28. cout<<b[i]+1<<" ";
    29. }
    30. }
    31. }
    32. }

     陈杨的

    1. #include<stdio.h>
    2. int b[101]={0};
    3. int a[101];
    4. int j=1;
    5. int n=0;
    6. int k=0;
    7. int s=0;
    8. int temp=0;
    9. int main(){
    10. scanf("%d%d",&n,&k);
    11. for(int i=1;i<=n;i++){
    12. scanf("%d",&temp);
    13. if(b[temp]==0){
    14. b[temp]+=i;
    15. s++;
    16. }
    17. }
    18. if(s<k){
    19. printf("NO\n");
    20. }else{
    21. int cnt=0;
    22. printf("YES\n");
    23. for(int i=1;i<=100&&k;i++){
    24. if(b[i]!=0){
    25. printf("%d ",b[i]);
    26. cnt++;
    27. if(cnt==k)return 0;
    28. }
    29. }
    30. }
    31. }
    32. //可以将题目概括为:输入 一个变量n和一个变量k,n代表接下来将会有一组个数为n的数据,
    33. // 每个数据范围(1-100),这个数值代表一个人的性格值;
    34. //k代表性格种类个数,
    35. //题目要求判断这n个性格值的数据组中能否分成k个以上的类
    36. //例如1 1 2 3能分成3类、1 2 3 4能分成四类
    37. //判断完后,如果类别数能达到k,再输出k个个性不同的人对应数组里的位置 ;例如{15 13 15 15 12} 中输出{1 2 5 }
    38. //利用一个桶数组b[i],作用是记录i性格的人有没有出现过,b[i]存储性格i第一次出现时是位置也就是 当时n个人中的第几个
    39. //读入数据时 例如此时输入的性格为temp 判断b[temp]是否为零,如果为零 说明此时的temp是全新的性格,
    40. //需要用b[]记录,及b[temp]=i,同时当前出现的性格种类+1
    41. //如果不为零 说明之前已经出现过性格为temp的人,不做任何改变
    42. //到最后输入完成,cnt计数器统计完成了性格类别的个数,同时数组b[]中已经记录了出现过的且第一次出现性别的位置
    43. // 最后输出判断cnt是否大于k,如果是,再将k和数组b的信息输出即可
    44. //注意题目说只需要输出k种,多出来的cnt-k不能输出

     CodeForces - 1539Bhttps://vjudge.net/contest/528020#problem/FCodeForces - 1539B

    训练1(共12题) - Virtual Judge

    I题

    佩蒂娅曾经写过一首悲伤的情歌,并将它分享给瓦莎。这首歌是一串由小写英文字母组成的字符串。瓦莎就这首歌编了q个问题。每个问题都是关于歌曲中第 l 个字母到第 r 个字母的一个子段。Vasya按照这个子段的字符串的顺序从左到右歌唱,对于每个字母我们会对这个字母重复唱k次,其中k是字母表中对应这个字母的索引。
    例如,如果问题是关于子字符串“abbcb”,那么Vasya歌唱字母“a”一次,对于每个字母“b”歌唱两次,字母“c”歌唱三次,这样结果唱出来的字符串就为“abbbbcccbb”,其长度为10。Vasya对结果字符串具体是什么不感兴趣,但是对于结果的字符串长度感兴趣。

    所以请你帮助Petya,对于每次Vasya的询问,给出每次询问的子字符串的结果字符串的长度。

    1. #include<iostream>
    2. #include<bits/stdc++.h>
    3. using namespace std;
    4. char arr[99999],c;
    5. int main()
    6. {
    7. int n,q,l,r=0,b[99999],a[99999];
    8. cin>>n>>q;
    9. for(int i=1;i<=n;i++)
    10. {
    11. cin>>c;
    12. a[i]=(c-'a'+1);// 对题目中这句话“对于每个字母我们会对这个字母重复唱k次,其中k是字母表中对应这个字母的索引。”
    13. }//k是每个字母对应26个英文字母表的索引,举例就是A=1 B=2 C=3 D=4 E=5 F=6 G=7 ,将每个字符串中每个字母对应的索引号存储到数组a中
    14. //题目要求每次询问一个区间内的结果字符串的长度
    15. for(int i=1;i<=n;i++)//记录i是从1开始的,因为下面要用到他的前一项i==0
    16. //对应每一个数组b[n],存储着从a[1]、a[2]、a[3]、到a[n]内每一个数组的
    17. {
    18. //使用前缀和公式
    19. b[i]=b[i-1]+a[i];
    20. }
    21. for(int i=0;i<q;i++)//求区间范围内的长度
    22. {
    23. cin>>l>>r; cout<
    24. }
    25. }

     

     

    J题  黑暗爆炸 - 1218 

    训练1(共12题) - Virtual Judge

    https://darkbzoj.cc/problem/1218

    1. #include<bits/stdc++.h>
    2. using namespace std;
    3. typedef long long ll;
    4. const int N=5005;//防止越界
    5. int a[N][N]={0},s[N][N]={0};
    6. int main(void)
    7. {
    8. int n,r,ans,res,x,y,w;//
    9. scanf("%d%d",&n,&r);
    10. while(n--)
    11. {
    12. //输入每个坐标和它的价值
    13. scanf("%d%d%d",&x,&y,&w);
    14. x++;
    15. y++;
    16. a[x][y]+=w;
    17. }
    18. for(int i=1;i<N;i++)
    19. {
    20. for(int j=1;j<N;j++)
    21. {//套用公式,遍历,s[i][j]表示的是从[0,0]到 [i][j]这两个点所构成矩形面积内亮度的大小(a[x][y]的大小)
    22. s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
    23. }
    24. }
    25. for(int i=r;i<N;i++)
    26. {
    27. for(int j=r;j<N;j++)
    28. {
    29. //输入两个坐标点求两个坐标点所构成矩形面积内亮度的大小
    30. //scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
    31. //sum=pre_sum[i][j]-pre_sum[i][j-r]-pre_sum[i-r][j]+pre_sum[i-r][j-r];
    32. ans=s[i][j]-s[i-r][j]-s[i][j-r]+s[i-r][j-r];
    33. res=max(ans,res);
    34. // if(ans>max) max=ans;
    35. }
    36. }
    37. if(res>32767)res=32767;
    38. printf("%d\n",res);
    39. return 0;
    40. }

     

  • 相关阅读:
    东南亚电商巨头Shopee宣布裁员,互联网大厂还能养老吗?
    封闭的一个多月,老菜鸟的 机械手和AGV 自动搬运小项目总结
    SpringMVC拦截器
    SpringCloud-04-Feign
    计算机毕业设计springboot+vue+elementUI企业制度管理系统
    SpringCloud使用Ribbon和Feign组件
    flyway的快速入门教程
    金仓数据库 KingbaseES 插件DBMS_OUTPUT
    The AWS Well-Architected Framework Module 1 - Overview
    2022/07/04学习记录
  • 原文地址:https://blog.csdn.net/weixin_61009782/article/details/127938220