线段树节点维护区间最小值,查找时优先从左侧的区间寻找.

每一次循环都在树中不停寻找第一个小于等于当前持有数的值,然后抹去,直到找不到为止.

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cstring>
  5. #define lson rt<<1
  6. #define rson rt<<1|1
  7. #define Lson l,m,lson
  8. #define Rson m+1,r,rson
  9. using namespace std;
  10. typedef long long LL;
  11. const int INF = 0x3f3f3f3f;
  12. const int maxn=1e5+5;
  13. int val[maxn];
  14. struct Node{
  15. int num;
  16. }tree[maxn<<2];
  17. int n;
  18. void pushup(int rt)
  19. {
  20. tree[rt].num = min(tree[lson].num,tree[rson].num);
  21. }
  22. void build(int l=1,int r=n,int rt=1)
  23. {
  24. if(l==r){
  25. tree[rt].num = val[l];
  26. return ;
  27. }
  28. int m = (l+r)>>1;
  29. build(Lson);
  30. build(Rson);
  31. pushup(rt);
  32. }
  33. bool flag;
  34. int query(int val,int l=1,int r=n,int rt=1)
  35. {
  36. int res=-1,m = (l+r)>>1;
  37. if(tree[rt].num<=val){
  38. if(l==r){
  39. int tmp = tree[rt].num;
  40. tree[rt].num = INF;
  41. return tmp;
  42. }
  43. res = query(val,Lson);
  44. if(res!=-1) {
  45. pushup(rt);
  46. return res;
  47. }
  48. res = query(val,Rson);
  49. if(res!=-1){
  50. pushup(rt);
  51. return res;
  52. }
  53. }
  54. return -1;
  55. }
  56. int ans1[maxn];
  57. int ans2[maxn];
  58. int main()
  59. {
  60. #ifndef ONLINE_JUDGE
  61. freopen("in.txt","r",stdin);
  62. freopen("out.txt","w",stdout);
  63. #endif
  64. int m,q;
  65. while(scanf("%d %d",&n,&m)==2){
  66. for(int i=1;i<=n;++i){
  67. scanf("%d",&val[i]);
  68. }
  69. build();
  70. flag = false;
  71. int sum = 0,tot=0;
  72. for(int i=1;i<=100000;++i){
  73. //cout<<tree[1].num<<endl;
  74. if(tree[1].num ==INF) flag = true;
  75. if(!flag) {
  76. sum += m;
  77. int tmp = query(sum);
  78. while(tmp!=-1){
  79. sum-=tmp;
  80. tot++;
  81. tmp = query(sum);
  82. }
  83. }
  84. ans1[i] = tot;
  85. ans2[i] = sum;
  86. }
  87. int id;
  88. scanf("%d",&q);
  89. for(int i=1;i<=q;++i){
  90. scanf("%d",&id);
  91. printf("%d %d\n",ans1[id],ans2[id]);
  92. }
  93. }
  94. return 0;
  95. }

ACM-ICPC 2018 南京赛区网络预赛 G. Lpl and Energy-saving Lamps (弱线段树)的更多相关文章

  1. ACM-ICPC 2018 南京赛区网络预赛 G Lpl and Energy-saving Lamps(线段树)

    题目链接:https://nanti.jisuanke.com/t/30996 中文题目: 在喝茶的过程中,公主,除其他外,问为什么这样一个善良可爱的龙在城堡里被监禁Lpl?龙神秘地笑了笑,回答说这是 ...

  2. ACM-ICPC 2018 南京赛区网络预赛 G Lpl and Energy-saving Lamps(模拟+线段树)

    https://nanti.jisuanke.com/t/30996 题意 每天增加m个灯泡,n个房间,能一次性换就换,模拟换灯泡过程.询问第几天的状态 分析 离线做,按题意模拟.比赛时线段树写挫了. ...

  3. ACM-ICPC 2018 南京赛区网络预赛 G. Lpl and Energy-saving Lamps(二分+线段树区间最小)

    During tea-drinking, princess, amongst other things, asked why has such a good-natured and cute Drag ...

  4. 计蒜客 30996.Lpl and Energy-saving Lamps-线段树(区间满足条件最靠左的值) (ACM-ICPC 2018 南京赛区网络预赛 G)

    G. Lpl and Energy-saving Lamps 42.07% 1000ms 65536K   During tea-drinking, princess, amongst other t ...

  5. ACM-ICPC 2018 南京赛区网络预赛 I Skr (马拉车+hash去重)或(回文树)

    https://nanti.jisuanke.com/t/30998 题意 给一串由0..9组成的数字字符串,求所有不同回文串的权值和.比如说“1121”这个串中有“1”,“2”,“11”,“121” ...

  6. ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心)

    ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心) Trace 问答问题反馈 只看题面 35.78% 1000ms 262144K There's a beach in t ...

  7. ACM-ICPC 2018 南京赛区网络预赛(12/12)

    ACM-ICPC 2018 南京赛区网络预赛 A. An Olympian Math Problem 计算\(\sum_{i=1}^{n-1}i\cdot i!(MOD\ n)\) \(\sum_{i ...

  8. ACM-ICPC 2018 南京赛区网络预赛 J.sum

    A square-free integer is an integer which is indivisible by any square number except 11. For example ...

  9. ACM-ICPC 2018 南京赛区网络预赛 E题

    ACM-ICPC 2018 南京赛区网络预赛 E题 题目链接: https://nanti.jisuanke.com/t/30994 Dlsj is competing in a contest wi ...

随机推荐

  1. 【linux】硬盘分区

    fdisk -l fdisk /dev/sda d--删除分区 n-新建分区 p--主分区 e--扩展分区 t--改变分区格式 82为swap分区 w--保存退出 http://www.blogjav ...

  2. Spring学习笔记 7.1 Spring MVC起步

    7.1.1 跟踪Spring MVC的请求请求首先到达DispatcherServlet(DispatcherServlet是Spring MVC中的前端控制器):DispatcherServlet的 ...

  3. Shell脚本编程与文件系统修复

    导读 Linux基金会发起了LFCS认证(Linux 基金会认证系统管理员)Linux Foundation Certified Sysadmin,这是一个全新的认证体系,旨在让世界各地的人能够参与到 ...

  4. dede标签:arclist标签使用大全

    特别提示:arclist是织梦建站系统中最重要的标签,同时也是最基础的标签,希望大家熟练掌握,可以说是学习织梦必备知识. 标签名称:arclist标记简介:织梦常用标记,也称为自由列表标记,其中img ...

  5. js 高程 22.1.4 函数绑定 bind() 封装分析

    js 高程 书中原话(斜体表示): 22.1.4 函数绑定 另一个日益流行的高级技巧叫做函数绑定.函数绑定要创建一个函数,可以在特定的this 环境中 以指定参数调用另一个函数.该技巧常常和回调函数与 ...

  6. CodeForces 639 A

    Bear and Displayed Friends time limit per test2 seconds memory limit per test256 megabytes inputstan ...

  7. iOS如何让主界面不显示NavigationBar

    这个问题曾经困扰过我.现在我给出正解.- (void)viewWillAppear:(BOOL)animated {    [super viewWillAppear:animated]; [self ...

  8. IIs7下配置php

    因为一个朋友的服务器是window的需要两个版本的php,一个是现在用的php5.2,现在要用一个5.3的版本,所以考虑IIS下的配置. 1.首先当然是要下载一份php了,我采用的是免安装的,很方便, ...

  9. 剑指Offer——数组中重复的数字

    题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度 ...

  10. 一条SQL引起的雪崩

    1.问题描述 MySQL服务器卡死,CPU飚到300%多,命令执行缓慢. 2.问题定位 踩了狗屎运,直接找到了问题缘由 发现了一条SQL写的模糊匹配,将%写在了关键字的前面,这样会造成查询不使用索引, ...