codeforces Round#429 (Div2)
2017-08-20?10:00:37
writer:pprp
用頭文件#include <bits/stdc++.h>很方便
A. Generous Kefa codeforces 841 A
題目如下:
One day Kefa found?n?baloons. For convenience, we denote color of?i-th baloon as?si?— lowercase letter of the Latin alphabet. Also Kefa has?k?friends. Friend will be upset, If he get two baloons of the same color. Kefa want to give out?all?baloons to his friends. Help Kefa to find out, can he give out all his baloons, such that no one of his friens will be upset — print ?YES?, if he can, and ?NO?, otherwise. Note, that Kefa's friend will not upset, if he doesn't get baloons at all.
InputThe first line contains two integers?n?and?k?(1?≤?n,?k?≤?100) — the number of baloons and friends.
Next line contains string?s?— colors of baloons.
OutputAnswer to the task — ?YES? or ?NO? in a single line.
You can choose the case (lower or upper) for each letter arbitrary.
Examples input 4 2aabb output YES input 6 3
aacaab output NO
統計某個字符數量是否超過給定人數即可(水題) #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring>using namespace std;char ch[110]; int num[110]; int Max = -9999; int buck[30];int main() {int n, k;cin >> n >> k;memset(num, 0 , sizeof(num));memset(buck, 0, sizeof(num));for(int i = 0 ; i < n ; i++){cin >> ch[i];num[i] = ch[i] - 'a';}for(int i = 0 ; i < n ;i++){buck[num[i] ]++;}for(int i = 0 ; i < 30 ; i++){if(Max < buck[i])Max = buck[i];}if(Max > k)cout << "NO" << endl;elsecout << "YES" << endl;return 0; }
?
B. Godsend?codeforces 841B
題目如下:
Leha somehow found an array consisting of?n?integers. Looking at it, he came up with a task. Two players play the game on the array. Players move one by one. The first player can choose for his move a subsegment of non-zero length with an odd sum of numbers and remove it from the array, after that the remaining parts are glued together into one array and the game continues. The second player can choose a subsegment of non-zero length with an even sum and remove it. Loses the one who can not make a move. Who will win if both play optimally?
InputFirst line of input data contains single integer?n?(1?≤?n?≤?106) — length of the array.
Next line contains?n?integers?a1,?a2,?...,?an?(0?≤?ai?≤?109).
OutputOutput answer in single line. "First", if first player wins, and "Second" otherwise (without quotes).
Examples input 41 3 2 3 output First input 2
2 2 output Second
分析:找規律的題目,經過多次舉例可以看出 單數占優勢, 偶數占劣勢
所以僅需要判斷是否一開始就是偶數就可以,注意要用scanf 不要用 cin
AC代碼如下: #include <iostream> #include <cstring> #include <cstdio>using namespace std; typedef long long ll;int main() {int n;ll tmp;scanf("%d",&n);int cntodd = 0;int cnteven = 0;for(int i = 0 ; i < n; i++){scanf("%lld",&tmp);if(tmp & 1)cntodd++;elsecnteven++;}if(cntodd == 0)cout << "Second" << endl;elsecout << "First" << endl;return 0; }
?codeforce 841 C
C. Leha and Function
題目如下:
Leha like all kinds of strange things. Recently he liked the function?F(n,?k). Consider all possible?k-element subsets of the set[1,?2,?...,?n]. For subset find minimal element in it.?F(n,?k)?— mathematical expectation of the minimal element among all?k-element subsets.
But only function does not interest him. He wants to do interesting things with it. Mom brought him two arrays?A?and?B, each consists ofm?integers. For all?i,?j?such that?1?≤?i,?j?≤?m?the condition?Ai?≥?Bj?holds. Help Leha rearrange the numbers in the array?A?so that the sum??is maximally possible, where?A'?is already rearranged array.
InputFirst line of input data contains single integer?m?(1?≤?m?≤?2·105) — length of arrays?A?and?B.
Next line contains?m?integers?a1,?a2,?...,?am?(1?≤?ai?≤?109) — array?A.
Next line contains?m?integers?b1,?b2,?...,?bm?(1?≤?bi?≤?109) — array?B.
OutputOutput?m?integers?a'1,?a'2,?...,?a'm?— array?A'?which is permutation of the array?A.
Examples input 57 3 5 3 4
2 1 3 2 3 output 4 7 3 5 3 input 7
4 6 5 8 8 2 6
2 1 2 2 1 1 2 output 2 6 4 5 8 8 6
題意很不好理解,觀察數據以后發現所謂的期望就是幾分之幾?
比如: 第一個例子中
7 3 5 3 4
2 1 3 2 3
期望為:2 / 7 + 1 / 3 + 3 / 5 + 2 / 3 + 3 / 4
題目要求期望最大值,那么要將分子中最小的與分母中最大的進行匹配
比較坑的一點是,如果分子相同,那么該如何處理?
本來以為應該從小到大排序,但是之后看的時候并沒有要求怎么排序
所以用sort pair就可以解決了
一開始本來想用multimap來著,但是沒有必要
用pair進行排序就可以了,sort只能排序線性的容器,所以也不能對map進行排序(雖然map中按key已經排好了)
代碼如下:
#include<bits/stdc++.h>using namespace std;int n;pair<int, int> a[200008]; pair<int, int> b[200008];int ansa[200008];int main() {cin >> n;for (int i = 0; i < n; i++) {cin >> a[i].first;a[i].second = i;}for (int i = 0; i < n; i++) {cin >> b[i].first;b[i].second = i;}sort(a, a + n);sort(b, b + n);for (int i = 0; i < n; i++) {ansa[b[i].second] = a[n - 1 - i].first;}for (int i = 0; i < n; i++) {printf("%d ", ansa[i]);}return 0; }?
?
轉載于:https://www.cnblogs.com/pprp/p/7399073.html
總結
以上是生活随笔為你收集整理的codeforces Round#429 (Div2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英语stepbystep书里面没有光盘可
- 下一篇: HYCO3Weeklyprojectwe