把一个任务拆成两个,在s时加入,在e+1时减去即可
直接离散化后上主席树

  1. # include <bits/stdc++.h>
  2. # define IL inline
  3. # define RG register
  4. # define Fill(a, b) memset(a, b, sizeof(a))
  5. using namespace std;
  6. typedef long long ll;
  7. const int _(5e6 + 10);
  8. IL ll Read(){
  9. RG char c = getchar(); RG ll x = 0, z = 1;
  10. for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;
  11. for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
  12. return x * z;
  13. }
  14. int ls[_], rs[_], rt[_], sz[_], n, m, p[_], id[_], s[_], e[_];
  15. int num, len, type[_], tim[_], val[_], cnt, ID[_];
  16. ll sum[_];
  17. IL bool Cmp(RG int x, RG int y){ return tim[x] < tim[y]; }
  18. IL void Build(RG int &x, RG int l, RG int r){
  19. x = ++num;
  20. if(l == r) return;
  21. RG int mid = (l + r) >> 1;
  22. Build(ls[x], l, mid); Build(rs[x], mid + 1, r);
  23. }
  24. IL void Modify(RG int &x, RG int l, RG int r, RG int tp, RG int va){
  25. rt[++num] = rt[x]; ls[num] = ls[x]; rs[num] = rs[x];
  26. sz[num] = sz[x] + tp; sum[num] = sum[x] + tp * p[va];
  27. x = num;
  28. if(l == r) return;
  29. RG int mid = (l + r) >> 1;
  30. if(va <= mid) Modify(ls[x], l, mid, tp, va);
  31. else Modify(rs[x], mid + 1, r, tp, va);
  32. }
  33. IL ll Query(RG int x, RG int l, RG int r, RG int k){
  34. if(l == r) return 1LL * p[l] * k;
  35. RG int mid = (l + r) >> 1;
  36. if(k <= sz[ls[x]]) return Query(ls[x], l, mid, k);
  37. return sum[ls[x]] + Query(rs[x], mid + 1, r, k - sz[ls[x]]);
  38. }
  39. int main(RG int argc, RG char* argv[]){
  40. m = Read(); n = Read();
  41. for(RG int i = 1; i <= m; ++i) s[i] = Read(), e[i] = Read(), id[i] = p[i] = Read();
  42. sort(p + 1, p + m + 1); len = unique(p + 1, p + m + 1) - p - 1;
  43. for(RG int i = 1; i <= m; ++i){
  44. id[i] = lower_bound(p + 1, p + len + 1, id[i]) - p;
  45. ++cnt; ID[cnt] = cnt; type[cnt] = 1; tim[cnt] = s[i]; val[cnt] = id[i];
  46. ++cnt; ID[cnt] = cnt; type[cnt] = -1; tim[cnt] = e[i] + 1; val[cnt] = id[i];
  47. }
  48. sort(ID + 1, ID + cnt + 1, Cmp);
  49. Build(rt[0], 1, len);
  50. for(RG int t = 1, j = 1; t <= n; t++){
  51. rt[t] = rt[t - 1];
  52. for(; t == tim[ID[j]]; ++j){
  53. RG int i = ID[j];
  54. Modify(rt[tim[i]], 1, len, type[i], val[i]);
  55. }
  56. }
  57. for(RG ll i = 1, ans = 1; i <= n; ++i){
  58. RG ll x = Read(), a = Read(), b = Read(), c = Read(), k = 1 + (a * ans + b) % c;
  59. k = min(k, (ll)sz[rt[x]]);
  60. ans = Query(rt[x], 1, len, k);
  61. printf("%lld\n", ans);
  62. }
  63. return 0;
  64. }

[CQOI2015]任务查询系统的更多相关文章

  1. BZOJ_3932_[CQOI2015]任务查询系统_主席树

    BZOJ_3932_[CQOI2015]任务查询系统_主席树 题意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,P ...

  2. BZOJ3932: [CQOI2015]任务查询系统 主席树

    3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 4869  Solved: 1652[Submit][St ...

  3. P3168 [CQOI2015]任务查询系统

    题目地址:P3168 [CQOI2015]任务查询系统 主席树的模板题 更模板的在这儿:P3834 [模板]可持久化线段树 1(主席树) 形象的说,P3834是"单点修改,区间查询" ...

  4. 主席树||可持久化线段树||离散化||[CQOI2015]任务查询系统||BZOJ 3932||Luogu P3168

    题目: [CQOI2015]任务查询系统 题解: 是一道很经典的题目.大体思路是抓优先级来当下标做主席树,用时刻作为主席树的版本.然而优先级范围到1e7去了,就离散化一遍.然后把每个事件的开始(s). ...

  5. bzoj3932 / P3168 [CQOI2015]任务查询系统(主席树+差分)

    P3168 [CQOI2015]任务查询系统 看到第k小,就是主席树辣 对于每一段任务(a,b,k),在版本a的主席树+k,版本b+1的主席树-k 同一时间可能有多次修改,所以开个vector存操作, ...

  6. 2018.06.30 BZOJ 3932: [CQOI2015]任务查询系统(主席树)

    3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MB Description 最近实验室正在为其管理的超级计算机编制一套任务管理 ...

  7. [CQOI2015]任务查询系统 主席树

    [CQOI2015]任务查询系统 LG传送门 以前还没见过主席树的这种写法. 考虑使用差分的思想处理每一个任务,然后所有的东西就都能顺理成章地用主席树维护了,查询的时候和平时的主席树有一点不同,详见代 ...

  8. 【BZOJ3932】[CQOI2015]任务查询系统 主席树

    [BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...

  9. bzoj 3932: [CQOI2015]任务查询系统 -- 主席树 / 暴力

    3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec  Memory Limit: 512 MB Description 最近实验室正在为其管理的超级计算机编制一套任务管 ...

  10. BZOJ3932 CQOI2015 任务查询系统 【主席树】

    BZOJ3932 CQOI2015 任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei, ...

随机推荐

  1. LearnPython_week1

    1.      Python安装 2.      Hello World程序 3.      变量的简单使用 4.      注释#'" 5.      用户输入 6.      字符串格式 ...

  2. 根据展示文字自适应 cell 高度,实现点击cell的伸缩扩展

    1.要根据展示的文字计算cell的高度, 再此给NSString写的延展的方法, 以此获取展示文字的高度 2.在自定义的cell中 声明属性和定义方法 注:在cell上初始化子控件,最好用代码写, 不 ...

  3. Golang学习 - strconv 包--数据类型转换

    // 将布尔值转换为字符串 true 或 false func FormatBool(b bool) string // 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true ...

  4. Swift iOS 日期操作:NSDate、NSDateFormatter

    1.日期(NSDate) // 1.初始化 // 初始化一个当前时刻对象 var now = NSDate() // 初始化一个明天当前时刻对象 var tomorrow = NSDate(timeI ...

  5. href与src 区别

    src 是可替换的文本支撑,将指向的内容引入文档当前标签所在的位置, 当浏览器解析到该标签时,将暂停其它资源的下载处理, 请求该标签的src ,下载指向的外部资源并应用到当前文档, 所以js 脚本一般 ...

  6. EF数据迁移,未将对象引用设置到对象实例

    现象: 执行Enable-Migrations -force时就报"未将对象引用设置到对象实例"的异常: DbProviderServicesExtensions.GetProvi ...

  7. java设计模式-----1、简单工厂模式

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,简单来说 ...

  8. python入门学习笔记(三)

    10.函数 求绝对值的函数 abs(x) 也可以在交互式命令行通过 help(abs) 查看abs函数的帮助信息.调用 abs 函数:>>> abs(100)100>>& ...

  9. appium+Python 启动app(一)

    当我们appium和Python环境都配置好了,如何启动我们第一个app呢?下面介绍appium+Python启动app的操作步骤,为了能够详细查看,我们这里使用夜游神模拟器进行示范. 测试项目:QQ ...

  10. windows 如何编译 Openssl ?

    windows 如何编译 Openssl ? 编译环境 VS2015 Openssl 1.0.2 ActivePerl 5.24.3 x64 编译步骤 安装 ActivePerl 期间,勾选添加至环境 ...