【贪心】【codeforces】651B Beautiful Paintings
2016-03-30 10:24
423 查看
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=336201
有n幅画要展览,每一幅画都有一个美丽度,一个人看展览的时候如果现在看的这幅画比前一幅画的美丽度高,他就会高兴一次
问怎么排列这些画让那个参观的人高兴的次数最多
如果这n幅画都是从小到大排列,那么这个人就能高兴n-1次,但是会出现问题的地方就是如果有几幅画的美丽度是相同的,就不能这样单纯的排序。
但是如果让每幅画都不相同,多余1的美丽度相同的画被挑出来重新排序,直到每个美丽度只有1幅画,就可以得到答案。
最开始输入的时候将每幅画的美丽度扔到一个桶里
从小到大依次将大于等于1的x个桶中的画-1,得到x-1个高兴次数
重复上一个过程直到将桶中的画全部取出
有n幅画要展览,每一幅画都有一个美丽度,一个人看展览的时候如果现在看的这幅画比前一幅画的美丽度高,他就会高兴一次
问怎么排列这些画让那个参观的人高兴的次数最多
如果这n幅画都是从小到大排列,那么这个人就能高兴n-1次,但是会出现问题的地方就是如果有几幅画的美丽度是相同的,就不能这样单纯的排序。
但是如果让每幅画都不相同,多余1的美丽度相同的画被挑出来重新排序,直到每个美丽度只有1幅画,就可以得到答案。
最开始输入的时候将每幅画的美丽度扔到一个桶里
从小到大依次将大于等于1的x个桶中的画-1,得到x-1个高兴次数
重复上一个过程直到将桶中的画全部取出
#include<bits/stdc++.h> using namespace std; int a[1005]; int main(){ int n; while(~scanf("%d", &n)){ memset(a, 0, sizeof(a)); for(int i = 0; i < n; i++){ int temp; scanf("%d", &temp); a[temp]++; } int ans = 0; for(int i = 0; i < 1005; i++){ int n = 0; for(int j = 0; j < 1005; j++){ if(a[j] > 0){ a[j]--; n++; } } if(n > 1) ans += n-1; else if(n == 0) break; } printf("%d\n", ans); } return 0; }
相关文章推荐
- ld: 1 duplicate symbol for architecture arm64 clang: error: linker command failed with exit code 1 (
- SDL问题记录:无法识别的链接符号_SDL_main
- (Rails) : NoMethodError: undefined method cost' for BCrypt::Engine:Class
- OpenAIS学习笔记
- 自定义控件三部曲之绘图篇(七)——Paint之函数大汇总
- 我与小娜(44):AlphaGo与微软聊天机器人Tay都是新一代人工智能
- 全局类
- myBaits association的使用
- 并发学习笔记(三):join与wait/notify
- [leetcode 11] Container With Most Water
- HDU3452 Bonsai(树形DP)
- 关于使用AIDL出现空指针的解决办法
- Light oj 1138 - Trailing Zeroes (III) (二分)
- Check failed: error == cudaSuccess (8 vs. 0) invalid device function
- leetcode之旅(8)-Contains Duplicate
- leetcode之旅(8)-Contains Duplicate
- leetcode之旅(8)-Contains Duplicate
- QWaitCondition的用法
- leetcode——172——Factorial Trailing Zeroes
- Educational Codeforces Round 10 C. Foe Pairs