A. Vus the Cossack and a Contest(简单)
题目链接:codeforces 1186A
题意:
有n个人,m个铅笔,k个笔记本,问每个人能否至少获得一个铅笔一个笔记本。
解题思路:
...............
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main(){
int n, m, k;
cin >> n >> m >> k;
if(n <= m && n <= k){
cout << "Yes" << endl;
}
else{
cout << "No" << endl;
}
return 0;
}
D. Vus the Cossack and Numbers(思维)
题目链接:codeforces 1186D
题意:
给n 个浮点数,可以上下波动 1 ,最后的和为 0,求这 n 个数
题解:
先每个数向上取整,然后求和,如果sum > 0 ,就将前sum个数减少1,小心处理取整还有当数本身就是整数时,就不能变
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e5 + 5;
double a[maxn], b[maxn];
int main(){
ll sum = 0;
int n;
cin >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
if(a[i] == ceil(a[i])){
b[i] = 1;
}
sum = sum + ceil(a[i]);
a[i] = ceil(a[i]);
if(a[i] == -0){
a[i] = 0;
}
}
if(sum < 0){
int sum = -sum;
}
for(int i = 0; i < n; i++){
if(b[i] == 1){
sum++;
cout << a[i] << endl;
}
else if(i < sum){
cout << a[i] - 1 << endl;
}
else{
cout << a[i] << endl;
}
}
return 0;
}