吐槽下,提交的时候显示编译失败,过了好久又重新提交了竟然A了,中间检查代码耽误了好长时间
第一道打个表
arr 1 3 2 4
brr 1 3 3 4
arr是一群人一开始的实力,brr是当前这个人最多能赢多少局,比如3出现了2次,代表能赢2次
如果数据是
4 2
1 3 2 4
那么
1 3 2 4 3 赢了1次
3 2 4 1 3赢了2次
如果数据是
4 6
1 3 2 4
1 3 2 4 3 赢了1次
3 2 4 1 3赢了2次
3 4 1 2 4赢了1次
4 1 2 3
...
这个时候发现,4会一直赢下去
根据 brr 表可知 4赢了1次目前,那么还需要5场...

#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 100005;
int arr[maxn];
int brr[maxn];
int main()
{
    int n ,c;
    int cnt ; //赢的次数 
    while(cin>>n>>c){
        for(int i = 0;i<n;++i){
            cin>>arr[i];
        }
        int maxnum = arr[0];
        for(int i = 0;i<n;++i){
            if(maxnum>arr[i]){
                brr[i] = maxnum;
            }else{
                brr[i] = arr[i];
                maxnum = arr[i];
            }
        }     
        int nownum = arr[0];
        cnt = 0;
        int i;
        for(i = 1;i<n;++i){
            if(nownum == brr[i]){
                cnt++;
                if(cnt == c){
                    break;
                }
            } else{
                nownum = brr[i];
                cnt = 1;
            }
        }
        if(i<n){
            cout<<i<<endl;
        } else {
            cout<<n+c-cnt-1<<endl;
        }
    } 
    return 0;
} 
Last modification:April 26th, 2020 at 02:01 pm
如果觉得我的文章对你有用,请随意赞赏