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
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
using namespace std;
int main(){
int n,k,s,a,b,y=0,i;
mapx;
cin>>n>>k>>s;
while(s--){
cin>>a>>b;
x[a]+=b;
}
for(i=1;i<=n;i++){
if(x[i]
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
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>s1;
for(int i=0;i=w1&&u>=u1&&b>=b1&&g>=g1&&r>=r1&&(x-y)>=o)cout<<"YES\n";
else cout<<"NO\n";
}
return 0;
}