> 文章列表 > 2023年中国传媒大学程序设计大赛(同步赛)

2023年中国传媒大学程序设计大赛(同步赛)

2023年中国传媒大学程序设计大赛(同步赛)

A-ACM

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

众所周知,ACM竞赛是计算机领域最具影响力和含金量的比赛,新队员小A与校队牛人小B聊了起来:

小A:师哥,如果我不坚持训练,能在ACM国家级比赛中获得奖牌吗?

小B:不太可能0.0

小A:不太可能是有多不可能?能说的具体一点吗,比如获得铜牌的概率是多少?

小B:其实我已经告诉你了0.0

输入描述:

一个非负整数n(0≤n≤10000),代表小A想知道的不坚持训练能在ACM国家级比赛中获得铜牌概率的精确位数。

输出描述:

0,精确到n位小数。

示例1

输入

1

输出

0.0

示例2

输入

0

输出

0

示例3

输入

10

输出

0.0000000000

//都输出0,只是还要控制输出的小数点后a位

#include<bits/stdc++.h>
using namespace std;
int main(){int a;cin>>a;cout<<"0";if(a)cout<<".";while(a--)cout<<"0";return 0;
}

B-贪吃的Diana

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

小草莓 Diana 同学是众所周知的大胃王,如果每天无法吃够总计 K 饱腹度的外卖,她就会不开心。

今天她的朋友 —— 帅气的 Queen 同学拿到了 Diana 之前 N 天点的所有外卖的外卖单,共计 S 份。  

每份外卖单上有两个数字,ni 和 ki ,分别表示这份外卖是 Diana 是在这 N 天里的 第 ni 天点的,且这份外卖饱腹度为 ki 。

现在她想要计算之前 N 天中,Diana有多少天是不开心的,你能帮帮她吗?

输入描述:


第一行输入 N 和 K 和 S,

接下来 S 行,其中第 i 行代表一份外卖单,包含两个整数 ni 和 ki,

表示 Diana 在第 ni 天,吃了一份饱腹度为 ki 的食物。

输出描述:


输出Diana 不开心的天数。

示例1

输入

复制10 5 5 4 6 2 5 3 4 3 1 1 1

10 5 5
4 6
2 5
3 4
3 1
1 1

输出

复制7

7

说明

Queen拿到了之前10天里,Diana的五份食物清单,且Diana每天需要至少吃饱腹度为 5 的食物才能开心。

其中,Diana 在第2天和第3天,都吃到了饱腹度之和为 5 的食物,而在第4天,吃到了饱腹度之和为 6 的食物。

在第1天,Diana 只吃到了饱腹度之和为 1 的食物。

在第5天,第6天,第7天,第8天,第9天,第10天,Diana 没有吃到任何食物。(所以也没有任何清单)

所以,Diana 在之前10天中,只有3天吃饱了,剩下有7天是不开心的。答案为7。

备注:

0 < N,S ≤ 105,

0 ≤ K ≤ 109,
0 < ni ≤ N,

0 ≤  ki ≤ 104

//同一天点了多份外卖

#include<bits/stdc++.h>
using namespace std;
int main(){int n,k,s,a,b,y=0,i;map<int,int>x;cin>>n>>k>>s;while(s--){cin>>a>>b;x[a]+=b;}for(i=1;i<=n;i++){if(x[i]<k)y++;}cout<<y;return 0;
}

 C-神河霓朝纪

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

万智牌当中有两种牌。

  • 一种叫 地牌。对于每张你场上的地牌,你可以横置它——这会为你产生 特定颜色法术

  • 另一种叫 咒语牌。对于每张咒语,你需要支付特定颜色的法术力作为费用,才能施放这张咒语。

而法术力总共有五种不同的颜色,白,蓝,黑,红,绿。

具体来说,地牌具有如下效果。当地牌被横置时,可以产生一点卡上标注的颜色的法术力。(例如下图,便是五张不同颜色的单色地牌)

而咒语牌上标注的费用一定由如下两种组成。

  • 特定颜色的法术力 若干点。

  • 任意颜色法术力 若干点。

例如 左下图,指的是该咒语费用为,一点任意颜色的法术力,和四点黑色法术力

例如 右下图,指的是该咒语费用为,三点任意颜色的法术力,和一点白色法术力,一点黑色法术力

现在给定你场上的若干张地牌(每张地牌都可以被横置一次,且最多可以被横置一次)

给定若干张咒语,问你是否能打出所有咒语。

输入描述:


第一行是一个整数T,代表测试数据组数。

对于每组数据:

第一行是一个整数 N,代表你有多少张地牌。

接下来 N 行,每行一个字符串,字符串包含一个大写字母,表示地牌的颜色。共有五种可能的大写字母,W U B G R,分别代表 白 蓝 黑 绿 红。

接下来一行,一个整数M,代表你有多少张咒语牌。

接下来 M 行,每行一个字符串(最长不超过10),字符串包含若干个大写字母,代表咒语的费用及颜色。共有六种可能的大写字母 W U B G R O,分别代表 白 蓝 黑 绿 红 及无色(即任意颜色)。

输出描述:


对于每组测试数据:

一个整行——如果你的地牌足以支付所有的咒语,输出 “YES”。否则输出 “NO”。

示例1

输入

复制7 2 W W 1 WW 4 U W W B 2 BUO W 2 R B 1 ROO 3 B U R 1 RRU 3 R U R 2 RR O 3 U R B 2 UB R 4 R U U W 4 R O W G

7
2
W
W
1
WW
4
U
W
W
B
2
BUO
W
2
R
B
1
ROO
3
B
U
R
1
RRU
3
R
U
R
2
RR
O
3
U
R
B
2
UB
R
4
R
U
U
W
4
R
O
W
G

输出

复制YES YES NO NO YES YES NO

YES
YES
NO
NO
YES
YES
NO

备注:


数据保证,0 < T ≤ 200,0 < N ≤ 10000,0 < M ≤ 1000。

对于每个 地牌 字符串,保证为长度为 1 的字符串,且只会包含W U B G R 五种可能的字符。

对于每个 咒语牌 字符串,保证其长度不小于1,不大于10,且只会包含 W U B G R O 六种可能的字符。

如果你对题面始终感到困惑,不妨这样理解——世界上共有五种类型的货币,而你有 N 张支票,每张支票都可以兑换一种特定类型的货币。现在你想购买 M 件商品,而每件商品的价格,都形如“人民币4块+日元5块+美元3块+任意货币6块”的组合。问你手上的 N 张支票是否可以购买所有 M 件商品。

//细节很重要,之前一直把最后的y写成了x,而恰巧测试样例完全通过,导致提交四次造成了八十分钟罚时,最后是自编样例如下,发现输出为NO,最后检测输出x为0,在百思不得其解中终于发现了这个细节。包括忘记输入m,导致出现自测  运行超时和内存超限,所以注意细节。

1
2
W
W
1
OO
#include<bits/stdc++.h>
using namespace std;
int main(){int t,n,m;string s1,c1;cin>>t;while(t--){cin>>n;int w=0,u=0,b=0,g=0,r=0,w1=0,u1=0,b1=0,g1=0,r1=0,o=0;while(n--){cin>>c1;if(c1=="W")w++; if(c1=="U")u++;if(c1=="B")b++; if(c1=="G")g++;if(c1=="R")r++;}cin>>m;for(int k=0;k<m;k++){cin>>s1;for(int i=0;i<s1.size();i++){if(s1[i]=='W')w1++; if(s1[i]=='U')u1++;if(s1[i]=='B')b1++; if(s1[i]=='G')g1++;if(s1[i]=='R')r1++;if(s1[i]=='O')o++;}}int x=0,y=0;x=w+u+b+g+r; y=w1+u1+b1+g1+r1;if(w>=w1&&u>=u1&&b>=b1&&g>=g1&&r>=r1&&(x-y)>=o)cout<<"YES\\n";else cout<<"NO\\n";}return 0;
}