Codeforces 558B Amr and The Large Array(hash)
来源:互联网 发布:淘宝网活动 编辑:程序博客网 时间:2024/05/20 02:26
题意:
给一个数组,记数组中出现次数最多的元素出现的次数为这个数组的美丽值,求这个数组长度最短的子数组(要连续),使得该子数组的美丽值与原数组美丽值相等。要求输出子数组的起始和结束位置下标(从1开始)。
解析:
也是个水题。每个数最大才
106 ,用hash存储每个数出现的次数即可。输入的时候用一个结构体记录最左边的位置,和最右边的位置,以及区间的长度和每个值出现的次数,再把hash存入vector中,最后在排序一遍,优先按照出现的次数排序一遍,如果出现次数相同,按照区间的大小排序。最后输出vector的第一个。
#include <cstdio>#include <cstring>#include <algorithm>#include <cstdlib>#include <vector>#include <map>using namespace std;const int N = 1e5 + 10;struct Node { int st, end, len, cnt; Node() { st = end = len = cnt = 0; } Node(int _st, int _end, int _len, int _cnt) { st = _st, end = _end, len = _len; cnt = _cnt; }};map<int, Node> mp;map<int, Node>::iterator it;vector<Node> vec;bool cmp(Node a, Node b) { if(a.cnt != b.cnt) return a.cnt > b.cnt; return a.len < b.len;}int n;int main() { //freopen("in.txt", "r", stdin); while(scanf("%d", &n) != EOF) { mp.clear(); vec.clear(); int val; for(int i = 1; i <= n; i++) { scanf("%d", &val); if(!mp.count(val)) { mp[val] = Node(i, i, 1, 1); }else { Node& node = mp[val]; node.end = i; node.len = node.end - node.st + 1; node.cnt++; } } for(it = mp.begin(); it != mp.end(); it++) { vec.push_back(it->second); } sort(vec.begin(), vec.end(), cmp); printf("%d %d\n", vec[0].st, vec[0].end); } return 0;}
0 0
- Codeforces 558B Amr and The Large Array(hash)
- Codeforces 558B Amr and The Large Array
- codeforces 558B Amr and The Large Array-yy
- 【36.86%】【codeforces 558B】Amr and The Large Array
- codeforces #312 B B. Amr and The Large Array(统计)
- B. Amr and The Large Array
- B-codeforces558B-Amr and The Large Array
- Codeforces 558B Amr and The Large Array 数组美丽值
- CF 558B(Amr and The Large Array-计数)
- CF 558B Amr and The Large Array
- codeforce 558B Amr and The Large Array 思维题
- CF 558B Amr and The Large Array(暴力法)
- Code Forces 558 B. Amr and The Large Array(水~)
- Codeforces Round #312 (Div. 2) B. Amr and The Large Array
- Codeforces Round #312 (Div. 2) B. Amr and The Large Array
- Codeforces Round #312 (Div. 2) B. Amr and The Large Array
- Codeforces Round #312 (Div. 2)-B. Amr and The Large Array-暴力
- Codeforces Round #312 (Div. 2) B. Amr and The Large Array
- js 弹出对话框3种方式
- eclipse Formatter配置文件生成过程
- 编写yarn应用
- intell IDE初始用
- 3种解耦方式
- Codeforces 558B Amr and The Large Array(hash)
- Web开发技术十年发展历程
- C++ 语法学习笔记
- 你觉得测试人员的主要工作职责是什么?
- XMLHttpRequest对象的属性和方法
- 局域网共享文件
- java的世界
- 外贸企业建站为什么一定要选择国外服务器
- 关于PPP 2.4.5在CENTOS7 无法编译通过的解决方案