网易游戏2016校园招聘“游戏研发&平台开发”在线笔试——D题 Difficult Player Grouping
2015-09-18 15:17
711 查看
注意,lz并没有参加在线笔试,只是拿来练习一下,由于在hihocoder上并不能提交,只能用样例测试,所以不保证答案完全正确
题目:http://hihocoder.com/contest/ntest2015septdev/problem/4
分析:贪心,用multiset维护,每次取出数量最多的3类Hero组成一个队。设Hero种类有N种,玩家总数为M个,由于每次总数减3,则总的复杂度为O(Nlog(N) + M/3*3*log(N))= O((N+M)log(N))
题目:http://hihocoder.com/contest/ntest2015septdev/problem/4
分析:贪心,用multiset维护,每次取出数量最多的3类Hero组成一个队。设Hero种类有N种,玩家总数为M个,由于每次总数减3,则总的复杂度为O(Nlog(N) + M/3*3*log(N))= O((N+M)log(N))
#include <iostream> #include <set> using namespace std; int main() { // freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); int test, n, a, tot; for(cin >> test; test--; ){ multiset<int> ms; multiset<int>::iterator iter, eter; cin >> n; while(n--){ cin >> a; ms.insert(a); } tot = 0; while(ms.size() >= 3){ eter = iter = ms.end(); int x = *--iter; int y = *--iter; int z = *--iter; ms.erase(iter, eter); ++tot; if(--x) ms.insert(x); if(--y) ms.insert(y); if(--z) ms.insert(z); } printf("%d\n", tot >> 1); } return 0; }
相关文章推荐
- dsp广告是什么
- JVM基础知识GC
- GET和POST的区别,就是明信片和信封的区别
- 阿里云服务器被侵入记录
- com和c#的一些笔记
- Android开发相关网站和工具
- C++ typeid() 基类必须是多态类
- Boosting算法简介
- 调用initWithNibName方法时不能写上.xib
- package-info.java
- Android多线程下安全访问数据库
- TCP/IP协议-概念、应用、开发、Hack
- centos下安装Python之MySQLdb
- 外观模式
- 控制台输入整型数字1~4,然后对应输出四个季节
- 获取当前工作目录路径
- 移动端自适应
- 关于类成员不能访问实例成员的理解补充
- UITextField小总结
- 两个Excel文件怎么筛查出不一样的内容