本文主要是介绍CSUST 2020国庆新生有奖赛题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言:先为20级萌新们惨遭学长学姐毒手感到不幸,其次希望这次没发挥好的萌新也不要气馁,后面好好学算法,肯定有机会的(毒瘤会长说的 )。
A题: zw吃外卖 (此处先殴打出题人)
题解: 签到题,奇数就输出YES,偶数就输出NO
代码:
#include<cstdio>
int main()
{int n;scanf("%d",&n);if(n%2==1){printf("YES");}else{printf("NO");}
}
B题: lcj的烦恼
题解: 签到题,原价x元,微信打完折就是x*0.98元
#include<cstdio>
int main()
{int x;scanf("%d",&x);double ans=x*0.98;printf("%.2lf\n",ans);
}
C题: a+b
题解: 签到题, 题目虽然有点长,但都是废话(毒瘤的会长也好心把题目的关键语句加粗了),其实只要判断两个颜色的R值,B值,G值分别相加是否都等于255即可。
#include<stdio.h>
int main()
{int n1,k1,x1;int n2,k2,x2;scanf("%d%d%d",&n1,&k1,&x1);scanf("%d%d%d",&n2,&k2,&x2);if(n1+n2==255&&k1+k2==255&&x2+x1==255){printf("yes\n");}else{printf("no\n");}return 0;
}
D题: zw抢苹果(此处再次殴打出题人)
毒瘤出题人中文四级没过,题面各种锅,提供滴滴代打。
题解: 第一次拿的是第一组,第二次是在剩下的组中拿第二组,即取的是一开始的第三组,以此类推,易知取的是1 3 5 7 …组,那么剩下的全是偶数组,2,4,6,8 …,那么剩下的第k组的编号便是 2k,因此答案便是第2k组的苹果数量,若2*k>n,则无答案。
代码:
#include<cstdio>
int main()
{int n,k,x;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%d",&x);if(i==2*k){printf("%d\n",x);}}if(n<2*k){printf("-1\n");}
}
E题: 一直单身一直爽
题解: 先算出有多少个1,再判断是否存在连续k个1,怎么判断呢?
用 cnt去记录当前有多少个连续的1,依次遍历数组的每个元素,若值为1,则cnt++,若为0,则cnt=0, 若在某个位置上cnt>=k,则表示存在连续k个1,则输出无穷大,反之输出 1的个数 * x
代码:
#include<cstdio>
int main()
{int n,x,k,y;scanf("%d%d%d",&n,&x,&k);int cnt=0,flag=0,res=0;for(int i=1;i<=n;i++){scanf("%d",&y);cnt+=y;if(y==1) res++;else res=0;if(res==k) flag=1;}if(flag) printf("inf\n");else printf("%d\n",cnt*x);
}
F题: 神奇的青青草原
题解: 假如只有一只狼,那么灰太狼必定会去吃懒羊羊,因为他肯定不会被其他狼吃掉,假如有两只狼,不管哪只狼去吃羊,他必会被另一只狼吃掉,所以狼都不会去吃羊,假如有三只狼,如果灰太狼吃懒羊羊的话,情况就会回到两狼一羊的情况,剩下两只狼都不敢去吃,所以灰太狼能吃羊,以此类推,可以发现,狼为偶数的时候,不能吃羊,狼为奇数的时候可以吃羊。
代码:
#include<cstdio>
int main()
{int n;scanf("%d",&n);if(n%2==1){printf("nice");}else{printf("555");}
}
G题: dl的会长(会长确实是个毒瘤)
题解: 此题其实就是找四个数的第二大和第三大的数之间任意的数。原因:当只有两个数时,如果选择两个数之外的数,那么花费必定大于b-a,如果选两个数之间的任意数,那么花费就是b-a,同理四个数也是一样。要么直接用sort函数排个序,要么枚举4个数其中一个数为第二大或第三大,维护答案的最小值。因为不是第二大和第三大的数之间的数,算出来的答案肯定比最优解要大,所以是取最小值,第二种方法的时候记得要用long long,否则会爆int。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[10],ans = 2e9,sum;
int main(){for(int i = 1; i <= 4; i ++){scanf("%d",&a[i]);}for(int i = 1; i <= 4; i ++){sum = 0;for(int j = 1; j <= 4; j ++){sum = (sum + abs(a[j] - a[i]));}ans = min(ans , sum);}printf("%lld",ans);
}
这篇关于CSUST 2020国庆新生有奖赛题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!