题解 AT2466 【投票 (Vote)】

· · 题解

这是一道红题吧。。

做法就是直接模拟投票,每读入一个投票人的标准就从头找到第一个符合标准的比赛。然后记录一下投票最多的比赛编号就可以了

Code:

#include <iostream>
#include <cstdio>
using namespace std;
int n,m,w[1005],sum[1005],t,Max,flag;//w是每一个比赛的成本,t是当前投票人的标准,sum是每个比赛的投票数 
int main(){
    cin >>n>>m;
    for (int i=1;i<=n;i++)
        cin >>w[i];
    for (int i=1;i<=m;i++){
        cin >>t;
        for (int j=1;j<=n;j++)
            if (w[j]<=t){
                sum[j]++;
                if (Max<sum[j]){
                    Max=sum[j];
                    flag=j;
                }
                break;//记得break,不然后面的比赛也会+1 
            }
    }
    cout <<flag<<endl;
    return 0;
}

我好菜啊,只能在红题题解和翻译上做贡献......