[Codeforces673C]Bear and Colors(枚举,暴力)
2016-06-01 20:41
465 查看
题目链接:http://codeforces.com/contest/673/problem/C
题意:给一串数,不同大小的区间内出现次数最多的那个数在计数的时候会+1,问所有区间都这样计一次数,所有的数字的计数结果。如果有数字出现次数相同多,取最小的那个。
数据<=5000,那就暴力枚举每一个区间,每次维护当前出现最多次数和当前需要计数的那个数,每次更新一个值,那最大值就是这个值或者是之前存好的。每次判断就可以了,注意相同的时候取最小的那个数。
题意:给一串数,不同大小的区间内出现次数最多的那个数在计数的时候会+1,问所有区间都这样计一次数,所有的数字的计数结果。如果有数字出现次数相同多,取最小的那个。
数据<=5000,那就暴力枚举每一个区间,每次维护当前出现最多次数和当前需要计数的那个数,每次更新一个值,那最大值就是这个值或者是之前存好的。每次判断就可以了,注意相同的时候取最小的那个数。
/* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏┓┃キリキリ♂ mind! ┛┗┛┗┛┃\○/ ┓┏┓┏┓┃ / ┛┗┛┗┛┃ノ) ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┃┃┃┃┃┃ ┻┻┻┻┻┻ */ #include <algorithm> #include <iostream> #include <iomanip> #include <cstring> #include <climits> #include <complex> #include <fstream> #include <cassert> #include <cstdio> #include <bitset> #include <vector> #include <deque> #include <queue> #include <stack> #include <ctime> #include <set> #include <map> #include <cmath> using namespace std; #define fr first #define sc second #define cl clear #define BUG puts("here!!!") #define W(a) while(a--) #define pb(a) push_back(a) #define Rlf(a) scanf("%llf", &a); #define Rint(a) scanf("%d", &a) #define Rll(a) scanf("%I64d", &a) #define Rs(a) scanf("%s", a) #define Cin(a) cin >> a #define FRead() freopen("in", "r", stdin) #define FWrite() freopen("out", "w", stdout) #define Rep(i, len) for(int i = 0; i < (len); i++) #define For(i, a, len) for(int i = (a); i < (len); i++) #define Cls(a) memset((a), 0, sizeof(a)) #define Clr(a, x) memset((a), (x), sizeof(a)) #define Full(a) memset((a), 0x7f7f, sizeof(a)) #define lrt rt << 1 #define rrt rt << 1 | 1 #define pi 3.14159265359 #define RT return #define lowbit(x) x & (-x) #define onenum(x) __builtin_popcount(x) typedef long long LL; typedef long double LD; typedef unsigned long long ULL; typedef pair<int, int> pii; typedef pair<string, int> psi; typedef map<string, int> msi; typedef vector<int> vi; typedef vector<LL> vl; typedef vector<vl> vvl; typedef vector<bool> vb; const int maxn = 5050; int n; int t[maxn]; int vis[maxn]; int cnt[maxn]; int main() { // FRead(); while(~Rint(n)) { Cls(vis); Cls(cnt); For(i, 1, n+1) Rint(t[i]); For(i, 1, n+1) { int curmax = 0, pos; Cls(vis); curmax = ++vis[t[i]]; pos = t[i]; cnt[pos]++; For(j, i+1, n+1) { vis[t[j]]++; if(curmax < vis[t[j]]) { curmax = vis[t[j]]; pos = t[j]; } else if(curmax == vis[t[j]]) pos = min(pos, t[j]); cnt[pos]++; } } For(i, 1, n+1) printf("%d ", cnt[i]); printf("\n"); } RT 0; }
相关文章推荐
- 改进的插入排序算法
- 本地代码托管到github
- 同时加载执行多个js函数addLoadEvent()
- ubuntu中用终端命令关机重启
- Poj1228 Grandpa's Estate
- Read Phone Number
- 天池大数据比赛,菜鸟仓库比赛,御膳房操作
- 经典计算机视觉论文笔记——《Robust Real-Time Face Detection》
- git泄漏原理
- php解决时间超过2038年
- daemon守护进程初识
- dp poj3186
- 整数数据类型表示范围与位运算
- android NDK、JNI技术详解及NDK在Android系统架构中的位置关系
- 带交互的 iOS 产品原型可以用什么软件制作?
- 天池大数据比赛-菜鸟仓库比赛-第二赛季记录
- 【MyBatis框架点滴】——MyBatis输出映射
- 堆排序
- HDU 1214
- Android避免反复弹出同一Toast