E - Evil Forest 题目链接
题目大意:举行绘画比赛,举办n场比赛,告诉你每场比赛的人数,每场比赛至少要多准备10%的画板,计算至少准备的画板数量。
解析:水题
每场比赛至少要准备多10%的画板,就是每场比赛根据比赛人数的110% 的人数多10% (要分步操作)准备画板就可以了(至少就是只能多不能少,所以要向上取整)
关于精度问题
总结:ceil能不用就不用!!!毕竟是double,容易出错
以后做题尽量按照题目意思来吧🤣😂
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int t;
cin >> t;
for(int tt = 1;tt <= t;tt++){
double n , temp;
cin >> n;
int ans = 0;
for(int i = 0;i < n;i++){
cin >> temp;
ans += ceil(temp+temp*0.1);//这里一定要分开写,不然会wa,应该是精度出了问题
}
printf("Case #%d: %d\n",tt,ans);
}
return 0;
}
Dogs and Cages 题目链接
题目大意:编号 0-n-1 的n条狗 进 编号 0-n-1 的n个笼子,问不在自己笼子的狗的期望
解析:题目相当于从n个数字全排列是所有的可能性 总方案数就是 n ! n! n!
第i只狗进对了笼子 就是除了一个数字是对的,剩下的n-1个数字全排列,就是 ( n − 1 ) ! (n-1)! (n−1)!
只有第i只狗不在正确位置上的方案数 n ! − ( n − 1 ) ! n!−(n−1)! n!−(n−1)!
一共有n只狗 n*(n!−(n−1)!)
不在自己笼子的狗的期望就是所有没有进入对的笼子的总数除以总共排列的种数
n ∗ ( n ! − ( n − 1 ) ! ) / n ! n*(n!−(n−1)!)/n! n∗(n!−(n−1)!)/n! 化简后可得 n-1.
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
for(int i = 1;i <= t;i++){
double n;
cin >> n;
printf("Case #%d: %.10f\n",i,n-1);
}
return 0;
}
Rich Game 题目链接
题目大意:羊🐏和熊猫打羽毛球,总所周知,按照羽毛球比赛规则,至少 11 分并且领先至少 2
分才能获胜一场。现在熊猫输一分,羊给熊猫x元大型打假赛现场熊猫赢一局,熊猫给羊y元,一共打k场。Panda不能够欠Sheep钱。问:在k局内聪明的熊猫最多可以赢多少场。
解析:panda每赢一分给y元,输一分给x元。
①当熊猫赢的时候给羊的钱比他输的时候赢的钱多时,也就是pada输一局可以赢1局以上(>1)的情况,他只要把战局拖得够长,他就可以用羊的钱赢下每一局。(通常某人先得10分他就会赢得比赛,若出现平手(例如10&