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

多校contest1

题目大意是有一个长度为N的数组,给出M个"事实",每个事实指明一段区间内数字各异,求最后字典序最小的数组。

贪心+构造,给所有"事实"按 边界(左边界优先)排序,然后扫一遍"事实",用一个队列保证用以构造的所有数字最小且区间内各异。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define fst first
  4. #define scd second
  5. typedef pair<int ,int > pii;
  6.  
  7. vector< pii > facts;
  8. queue< int > num;
  9. bool inq[+];
  10. int ans[+];
  11.  
  12. int main(){
  13. int Test;
  14. scanf("%d",&Test);
  15. while(Test--){
  16. int N,M;
  17. scanf("%d%d",&N,&M);
  18. memset(inq,false,sizeof(inq));
  19. while(!num.empty()) num.pop();
  20. facts.clear();
  21. for(int i=;i<=N;++i) ans[i]=;
  22. for(int i=;i<M;++i){
  23. pii tmp;
  24. scanf("%d%d",&tmp.fst,&tmp.scd);
  25. if(tmp.fst!=tmp.scd) facts.push_back(tmp);
  26. }
  27. sort(facts.begin(),facts.end());
  28. int lastr=-,lastl=-;
  29. for(int i=;i<facts.size();++i){
  30. int l=facts[i].fst,r=facts[i].scd;
  31. if(r<=lastr) continue;
  32. if(l>lastr){
  33. while(!num.empty()) {
  34. inq[num.front()]=false;
  35. num.pop();
  36. }
  37. int cnt=;
  38. for(int i=l;i<=r;++i){
  39. int flag=;
  40. while(!flag){
  41. if(!inq[cnt]){
  42. inq[cnt]=true;
  43. num.push(cnt);
  44. ans[i]=cnt;
  45. flag=;
  46. }
  47. cnt++;
  48. }
  49. }
  50. lastr=r;
  51. lastl=l;
  52. continue;
  53. }
  54. if(l<=lastr){
  55. for(int i=;i<l-lastl;++i) {
  56. inq[num.front()]=false;
  57. num.pop();
  58. }
  59. int cnt=;
  60. for(int i=lastr+;i<=r;++i){
  61. int flag=;
  62. while(!flag){
  63. if(!inq[cnt]){
  64. inq[cnt]=true;
  65. num.push(cnt);
  66. ans[i]=cnt;
  67. flag=;
  68. }
  69. cnt++;
  70. }
  71. }
  72. lastl=l;
  73. lastr=r;
  74. continue;
  75. }
  76. }
  77. for(int i=;i<=N;++i) printf("%d%c",ans[i],i==N?'\n':' ');
  78. }
  79. return ;
  80. }

HDU 6301 Distinct Values的更多相关文章

  1. hdu 6301 Distinct Values (思维+set)

    hdu 6301 Distinct Values 题目传送门 题意: 给你m个区间,让你求出一个长度为n的区间且满足在这些区间的数不重复, 并且要求字典序最小 思路: 如果我们已经求出这个序列了,你会 ...

  2. hdu 6301 Distinct Values (2018 Multi-University Training Contest 1 1004)

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  3. hdu 6301 Distinct Values (贪心)

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  4. hdu 6301 Distinct Values(贪心)题解

    题意:长为n的串,给你m个区间,这些区间内元素不重复,问这样的串字典序最小为? 思路:用set保存当前能插入的元素,这样就能直接插入最小元素了.对操作按l排序,因为排过的不用排,所以两个指针L,R是一 ...

  5. hdu 6301 Distinct Values (双指针,水题)

    大意: 给定m个区间, 求构造一个长n且字典序最小的序列, 使得每个区间内的数各不相同 求出每个位置为左端点时向右延伸最大距离, 然后双指针, 每次从set中取最小 #include <iost ...

  6. HDU 6301.Distinct Values-贪心、构造字典序最小的数列 (2018 Multi-University Training Contest 1 1004)

    HDU6301.Distinct Values 这个题就是给你区间要求区间内的数都不相同,然后要求是字典序最小,直接贪心走一遍,但是自己写的时候,思路没有错,初始化写挫了... 将区间按左端点小的排序 ...

  7. 2018 Multi-University Training Contest 1 Distinct Values 【贪心 + set】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6301 Distinct Values Time Limit: 4000/2000 MS (Java/Ot ...

  8. hdu多校1004 Distinct Values

    Distinct Values Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): ...

  9. HDU 多校对抗赛 D Distinct Values

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

随机推荐

  1. 《Linux内核原理与分析》第四周作业

    课本:第3章 MenuOS的构造 内容总结 计算机的"三大法宝" 存储程序计算机 函数调用堆栈 中断 操作系统的"两把宝剑" 中断上下文切换:保存现场和恢复现场 ...

  2. 百度地图 JavaScript API

    最近有点懒  项目结尾了  完了好长时间 没有去总结项目中的问题 想了下还是写写吧 这是一个关于百度地图的 网页展示 <!DOCTYPE html><html><head ...

  3. LeetCode - Maximum Frequency Stack

    Implement FreqStack, a class which simulates the operation of a stack-like data structure. FreqStack ...

  4. 笔记本使用control线连接交换机

    要求: 1.一台笔记本 2.一条usb转rj45串口线 (一端是usb口一端是网口) 连接步骤: usb口插入笔记本,网口插入交换机控制口(交换机上面一般会有标注) 直连步骤: 首先查看是哪个com口 ...

  5. Python脚本模拟僵尸进程与孤儿进程

    最近一台机器的systemd内存高达30%多,一直不变,后来排查是僵尸进程,什么是僵尸进程呢,只能google,百度等先了解,然后自己总结了一下,虽然这是基础的东西,但是对于我来说就如新大陆一样.花了 ...

  6. exec 与文件描述符

    参考http://blog.csdn.net/baoendemao/article/details/51638746 1:用法       exec 3<2.txt  以只读方式打开2.txt, ...

  7. socket资源

    http://www.360doc.com/content/13/1231/16/14919052_341525862.shtml Linux下基于socket多线程并发通信的实现 https://w ...

  8. VUE打包上线优化

    1.将vue vue-router vuex 尽量使用CDN externals: { 'vue':'Vue', 'vue-router':'VueRouter', 'vuex':'Vuex', 'a ...

  9. aspose.cells 插入图片

    ,,"d:\\1.jpg"); Aspose.Cells.Drawing.Picture pic = worksheet.Pictures[iIndex]; pic.Placeme ...

  10. 涂抹mysql笔记-数据导出导入

    数据导出导入<>利用CSV存储引擎加载数据:CSV存储引擎基于CSV格式文件存储数据,CSV格式是纯文本格式的文件,以逗号分隔取值.CSV引擎表的所有列值不能为空.Excel可以直接打开有 ...