「CQOI2015」任务查询系统

传送门

好像也是板子题???

区间修改,单点查询,考虑差分。

然后每次查询时就直接在对应的主席树上二分即可。

参考代码:

#include <cstdio>
#include <vector>
#define rg register
#define file(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout)
using namespace std;
template < class T > inline void read(T& s) {
s = 0; int f = 0; char c = getchar();
while ('0' > c || c > '9') f |= c == '-', c = getchar();
while ('0' <= c && c <= '9') s = s * 10 + c - 48, c = getchar();
s = f ? -s : s;
} typedef long long LL;
const int _ = 100010; vector < int > vec1[_], vec2[_];
struct node { int lc, rc, cnt; LL sum; } t[_ << 6];
int n, m, tot, len, rt[_]; inline void update(int& p, int x, int k, int l = 1, int r = len) {
t[++tot] = t[p], t[tot].sum = t[p].sum + 1ll * x * k, t[tot].cnt = t[p].cnt + k, p = tot;
if (l == r) return ;
int mid = (l + r) >> 1;
if (x <= mid) update(t[p].lc, x, k, l, mid);
else update(t[p].rc, x, k, mid + 1, r);
} inline LL query(int p, int k, int l = 1, int r = len) {
if (l == r) return min(t[p].sum, 1ll * k * l);
int mid = (l + r) >> 1, num = t[t[p].lc].cnt;
if (num >= k) return query(t[p].lc, k, l, mid);
else return query(t[p].rc, k - num, mid + 1, r) + t[t[p].lc].sum;
} int main() {
#ifndef ONLINE_JUDGE
file("cpp");
#endif
read(m), read(n);
for (rg int s, e, p; m--; )
read(s), read(e), read(p), len = max(len, p), vec1[s].push_back(p), vec2[e + 1].push_back(p);
for (rg int i = 1; i <= n; ++i) {
rt[i] = rt[i - 1];
for (rg int j = 0; j < vec1[i].size(); ++j) update(rt[i], vec1[i][j], 1);
for (rg int j = 0; j < vec2[i].size(); ++j) update(rt[i], vec2[i][j], -1);
}
LL ans = 1;
for (rg int x, a, b, c, k, i = 1; i <= n; ++i) {
read(x), read(a), read(b), read(c);
k = (1ll * a * ans + b) % c + 1;
printf("%lld\n", ans = query(rt[x], k));
}
return 0;
}

「CQOI2015」任务查询系统的更多相关文章

  1. LibreOJ2097 - 「CQOI2015」任务查询系统

    Portal Description 给出\(n(n\leq10^5)\)个任务,和总时间范围\(m(m\leq10^5)\).每个任务有开始/结束时间\(s_i,e_i(1\leq s_i \leq ...

  2. LibreOJ2095 - 「CQOI2015」选数

    Portal Description 给出\(n,k,L,R(\leq10^9)\),求从\([L,R]\)中选出\(n\)个可相同有顺序的数使得其gcd为\(k\)的方案数. Solution 记\ ...

  3. 「CQOI2015」选数

    「CQOI2015」选数 题目描述 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都 ...

  4. 【LOJ】#2098. 「CQOI2015」多项式

    题解 令x = x - t代换一下会发现 \(\sum_{i = 0}^{n}a_i (x + t)^i = \sum_{i = 0}^{n} b_{i} x^{i}\) 剩下的就需要写高精度爆算了- ...

  5. Linux 小知识翻译 - 「LDAP」

    这次聊聊「LDAP」. LDAP是「Lightweight Directory Access Protocol」的所有,从名字上可以看出是协议的一种. LDAP是访问数据库(层次型数据库)的组件.管理 ...

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

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

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

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

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

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

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

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

随机推荐

  1. foreach中如何取全部长度的值

    foreach($data as $num=>$key ){ return $num; } 关键就是这个$num;

  2. 钉钉内网穿透工具在windows的使用。

    钉钉内网穿透工具在windows环境下使用 1.WIN+R,然后cmd,调出dos控制台 2.进入内网穿透程序ding.exe所在目录 3.执行 ./ding.exe -config=ding.cfg ...

  3. 问题 B: 奇怪的电梯

    问题 B: 奇怪的电梯 时间限制: 1 Sec  内存限制: 128 MB[命题人:admin] 题目描述 大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0& ...

  4. vue项目接入markdown

    vue 项目接入 markdown 最近做一个项目,需要在vue项目中接入 markdown 编辑器,其实这个好接,他没有什么特别的样式,男的就是图片的上传. 今天给大家推荐一个插件 :mavonEd ...

  5. HTML学习(12)列表

    HTML包括有序列表ol(ordered list).无序列表ul(unordered list).自定义列表dl(difinition list) 有序列表: <ol start=" ...

  6. Spark学习笔记1

    趁着工作业余时间,趁着内心对技术追求的热情,还是对Spark这个大数据内存计算框架动手了,毕竟人与人之间的差距都是在工作业余时间拉开的…… Spark官网:http://spark.apache.or ...

  7. Palindromes _easy version 题解

    “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串.请写一个程序判断读入的字符串是否是“回文”. Input输入包含多个测试实例,输入数据的第一行是一个正整数n ...

  8. 30分钟编写一个抓取 Unsplash 图片的 Python爬虫

       我一直想用 Python and Selenium 创建一个网页爬虫,但从来没有实现它. 几天前, 我决定尝试一下,这听起来可能是挺复杂的, 然而编写代码从 Unsplash 抓取一些美丽的图片 ...

  9. 【visio】数据可视化 - 数据展示

    本章讲解如何将形状数据展示成数据图像,也就是将添加的属性,展示在图形上 1.数据图形控制面板 选中图形>右键>数据>编辑数据图形 2.新建数据图形 数据字段:也就是图形的属性 显示为 ...

  10. 1.3 eclipse快捷键

    来源:http://blog.csdn.net/dashuxiaoai/article/details/8737928 另:Eclipse快捷键 10个最有用的快捷键  http://www.cnbl ...