欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

CSUST 2020国庆新生有奖赛题解

程序员文章站 2022-03-16 08:10:31
A题: zw吃外卖题解: 签到题,奇数就输出YES,偶数就输出NO代码:#include#include#include#include#include#include#include#include#include#define iss i...

前言:先为20级萌新们惨遭学长学姐毒手感到不幸,其次希望这次没发挥好的萌新也不要气馁,后面好好学算法,肯定有机会的(毒瘤会长说的 )。

CSUST 2020国庆新生有奖赛题解

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);
}

本文地址:https://blog.csdn.net/weixin_45755679/article/details/108987123