• 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.

    Input

    The 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.

    Output

    Answer 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 2
    aabb
    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;
          else
                cout << "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?

    Input

    First 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).

    Output

    Output answer in single line. "First", if first player wins, and "Second" otherwise (without quotes).

    Examples
    input
    4
    1 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++;
                else
                      cnteven++;
          }
                
                if(cntodd == 0)
                      cout << "Second" << endl;
                else
                      cout << "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.

    Input

    First 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.

    Output

    Output m integers a'1, a'2, ..., a'm — array A' which is permutation of the array A.

    Examples
    input
    5
    7 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;
    }
  • 相关阅读:
    vue-cli 2.x升级到3.x版本, 和3.x降级到2.x版本命令
    vue-cli 2.x项目,删除打包线上环境的控制台打印
    vue-cli 2.x项目使用cross-env新建多个打包环境
    解决vue项目路由出现message: "Navigating to current location (XXX) is not allowed"的问题
    vue打包后,解决出现不到字体文件的错误
    js 网络图片转base64的方式(两种)
    vscode编译器,Settings Sync 同步插件,忘记GitHub token 和 Gist的解决办法
    输入两个时间,计算他们相差多少天多少时,多少秒
    老生常谈之js深拷贝与浅拷贝
    React Hooks 你不来了解下?
  • 原文地址:https://www.cnblogs.com/pprp/p/7399073.html
Copyright © 2020-2023  润新知