本文主要是介绍[ABC329D] Election Quick Report,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
链接:[ABC329D] Election Quick Report - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题意翻译
共有 n 个人,有 m 次投票,每次会投给这 n 个人中的其中一个,问每次投票后得票最多的人是谁,如果有多个人同时得票最多,输出编号最小的。
输入输出样例
输入
3 7 1 2 2 3 1 3 3
输出 #1复制
1 1 2 2 1 1 3
输入
100 5 100 90 80 70 60
输出
100 90 80 70 60
输入
9 8 8 8 2 2 8 8 2 2
输出
8 8 8 2 8 8 8 2
解题思路:这题没有很复杂,完全可以当成两两比较,比如:1号1票,2号1票 ,此时输出1号。
比如:1号1票 ,2号2票,输出2号,一次类推,两两比较即可。
AC代码:
#include<iostream>using namespace std;const int N = 2e5+10;
int d[N]; //标记第i个人多少票
int maxn,pos; //maxn用来标记当前是谁票最多,pos表示编号最小的int main()
{int n,m;cin >> n >> m;for(int i=1;i<=m;i++){int x;cin >> x;d[x]++;if(d[x] > maxn){maxn = d[x];pos = x;}else if(d[x] == maxn){if(pos > x) pos =x;}cout << pos << endl;}return 0;
}
这篇关于[ABC329D] Election Quick Report的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!