Codeforces Round #429 (Div. 2)

来源:互联网 发布:ae2018cc破解版mac 编辑:程序博客网 时间:2024/06/08 19:29

A

判断一下某个字符是不是比k大

根据鸽笼原理即可知道至少有一个人会分到两种相同的颜色

#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <ctime>#include <iostream>#include <algorithm>#include <sstream>#include <string>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <utility>using namespace std;#define LL long long#define pb push_back#define mk make_pair#define mst(a, b)memset(a, b, sizeof a)#define REP(i, x, n)for(int i = x; i <= n; ++i)const int MOD = 1e9 + 7;const int qq = 1e5 + 10;int num[qq];char st[qq];int main(){int n, k;scanf("%d%d", &n, &k);scanf("%s", st);for(int i = 0; i < strlen(st); ++i) {num[st[i] - 'a']++;}bool f = true;for(int i = 0; i < 26; ++i) {if(num[i] > k)f = false;}if(!f)puts("NO");elseputs("YES");return 0;}

B

首先总和是奇数第一个人比赢

总和是偶数的情况,分两种

第一种数中存在奇数,这时可知奇数一定是偶数个, 那么可知总和变化 偶数(拿出奇数和)-> 奇数(拿出偶数和) ->奇数 此时第一个人把所有的拿完即可

第二种不存在奇数,这时第二个人赢

#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <ctime>#include <iostream>#include <algorithm>#include <sstream>#include <string>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <utility>using namespace std;#define LL long long#define pb push_back#define mk make_pair#define mst(a, b)memset(a, b, sizeof a)#define REP(i, x, n)for(int i = x; i <= n; ++i)const int MOD = 1e9 + 7;const int qq = 1e6 + 10;int num[qq];int main(){int n;scanf("%d", &n);int a = 0;for(int x, i = 0; i < n; ++i) {scanf("%d", num + i);if(num[i] % 2 == 1)a++;}if(a == 0)puts("Second");elseputs("First");return 0;}

C

这题让最大的a给最小的b即可

#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <ctime>#include <iostream>#include <algorithm>#include <sstream>#include <string>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <utility>using namespace std;#define LL long long#define pb push_back#define mk make_pair#define mst(a, b)memset(a, b, sizeof a)#define REP(i, x, n)for(int i = x; i <= n; ++i)const int MOD = 1e9 + 7;const int qq = 2e5 + 10;LL a[qq];struct Node {LL b, id;bool operator < (const Node &w) const {return b > w.b;}}p[qq];int ans[qq];int main(){int n;scanf("%d", &n);for(int i = 0; i < n; ++i) {scanf("%lld", a + i);}for(int i = 0; i < n; ++i) {scanf("%lld", &p[i].b);p[i].id = i;}sort(a, a + n);sort(p, p + n);for(int i = 0; i < n; ++i) {ans[p[i].id] = a[i];}for(int i = 0; i < n; ++i) {printf("%d ", ans[i]);}puts("");return 0;}


原创粉丝点击