原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=5360

题意:

大概的意思就是每个人有个人数接受范围$[l_i,r_i]$,现在你每次能从还未被选取的人中选择一个人,如果当前人数符合这个人的需求,那么这个人就会被选中。现在让你输出一个选择的序列,使得被选择的人数尽量多。

题解:

就贪心就好,总的来说就是人数不断增大的时候,每次从可行的所有$l$中选择$r$最小的那个。至于为什么这样是最优的。。需要脑补。

代码:

#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<functional>
#define MAX_N 100005
using namespace std; struct node {
public:
int val;
int pos; node(int v, int p) : val(v), pos(p) { } node() { } bool operator<(const node &a) const {
return val > a.val;
}
}; priority_queue<node> que; int n;
int T; vector<node> L[MAX_N];
vector<int> G;
int l[MAX_N],r[MAX_N]; bool used[MAX_N]; void init() {
for (int i = ; i <= n; i++)L[i].clear();
memset(used,,sizeof(used));
G.clear();
while (que.size())que.pop();
} int main() {
scanf("%d", &T);
while (T--) {
scanf("%d", &n);
init();
for (int i = ; i < n; i++)
scanf("%d", &l[i]);
for (int i = ; i < n; i++)
scanf("%d", &r[i]);
for (int i = ; i < n; i++)
L[l[i]].push_back(node(r[i], i + ));
int ans = ;
for (int i = ; i <= n; i++) {
for (int j = ; j < L[i].size(); j++)que.push(L[i][j]);
while (que.size() && que.top().val < i)que.pop();
if (que.empty()) {
ans = i;
break;
}
G.push_back(que.top().pos);
que.pop();
}
printf("%d\n", ans);
for (int i = ; i < G.size(); i++) {
printf("%d ", G[i]);
used[G[i]] = ;
}
for (int i = ; i <= n; i++)if (!used[i])printf("%d ", i);
printf("\n"); }
return ;
}

最新文章

  1. 【BZOJ-2555】SubString 后缀自动机 + LinkCutTree
  2. GJM : Python简单爬虫入门 (一) [转载]
  3. jquery send(data) 对data的处理
  4. maven pox.xml 设置主入口配置节点
  5. 又一种Mysql报错注入
  6. TCP connection status
  7. excel的常用公式
  8. OpenLayers3 online build
  9. linux下修改环境变量
  10. avalon 中require.config源码分析
  11. StringBuilder[] 作为数组如何使用
  12. C#调用Matlab生成的dll方法
  13. C++智能指针的实现
  14. PHP中实现在数据库中的增、删、查、改
  15. 并发编程之ThreadLocal、Volatile、synchronized、Atomic关键字扫盲
  16. c++中字符串的反转
  17. html input 禁止输入中文
  18. 12:Css3的概念和优势
  19. windows----------如何修改windows服务器远程端口
  20. .net core webapi+EF Core

热门文章

  1. redis--py操作redis【转】
  2. HBase0.94.2-cdh4.2.0需求评估测试报告1.0之二
  3. HDU 3639 SCC Hawk-and-Chicken
  4. python 提交form-data之坑
  5. python - work3
  6. matlab 画图进阶
  7. python集合、字符编码、bytes与二进制
  8. [git 学习篇]git管理的是修改,并非文件
  9. 当网络中断的时候,JTA全局事务管理,究竟会不会回滚???
  10. shiro实现app和web统一登录