zoukankan      html  css  js  c++  java
  • Codeforces Round #443 (Div. 2) B. Table Tennis

    Codeforces Round #443 (Div. 2) B. Table Tennis     879B

    啊啊啊啊啊啊 做的时候太天真了……一开始的直觉是对的……orz后来想多了,pretest还过了orz没想到啊orz,竟然wa了……

    一开始被k的大小迷惑了……根本就不用管呐,k>n的话,必然是序列中最大值的赢,k<n的话就循环判断谁的逆序数(或者逆序数+1)最先达到k

    (啊……其实就都按k<n写,直到到最大值了还没有赢k局的就……直接输出最大值……)

    其实……就是求逆序数的感觉??稍微变化一下……每次输的人往后排……那power最大的那个人排到第一位以后就一直都是他赢了啊,

    也就是说最多1个循环,局势就稳定了,emmmmm然后就暴力一下……记录一下逆序数,需要注意,当i跟j比,i输的时候j要记得+1啊……

    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    typedef long long ll;
    ll n, a[1005],b[1005],k;
    int main()
    {
        cin >> n >> k;
        for (int i = 0; i < n; i++)
            cin >> a[i];
        memset(b, 0, sizeof(b));
        int i = 0;
        while(i<n)
        {
            int j;
            for (j = i+1; j < n; j++)
            {
                if (a[i] < a[j])
                {
                    b[a[j]]++;
                    break;
                }
                else b[a[i]]++;
            }
            if (b[a[i]] >= k) //i先赢k局
            {
                cout << a[i] << endl;
                break;
            }
            if (j == n)  //此时a[j]为序列中的最大值,后面都是他赢了
            {
                cout << a[i] << endl;
                break;
            }
            i = j;// 在当前i输的时候,更新下一局,j前面的人已经排到队尾去了,不需要再判断了…
        }
        return 0;
    }
  • 相关阅读:
    c++ 中的substr
    c++ 中将数字字符串转换成int输出的stoi() 和 atoi()
    c++ 四舍五入函数 round
    stddef.h----常用函数
    local.h-----地区函数
    errno.h-----定义出错代码
    signal.h-----信号函数
    stdio.h----标准的输入输出函数
    time.h-------日期与时间函数
    math.h--------数学函数
  • 原文地址:https://www.cnblogs.com/Egoist-/p/7745448.html
Copyright © 2011-2022 走看看