就是裸的主席树,差分之后排序插入主席树就行了.

注意主席树查询的时候叶子节点要特判,因为本身是有size的

还有要开longlong

CODE

#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
char cb[1<<15],*cs=cb,*ct=cb;
#define getc() (cs==ct&&(ct=(cs=cb)+fread(cb,1,1<<15,stdin),cs==ct)?0:*cs++)
template<class T>inline void read(T &res) {
char ch; for(;!isdigit(ch=getc()););
for(res=ch-'0';isdigit(ch=getc());res=res*10+ch-'0');
}
const int MAXN = 100005;
const int MAXM = MAXN*60;
struct task { int x, val; }a[MAXN<<1];
inline bool cmp(const task &i, const task &j) { return i.x < j.x; }
int ch[MAXM][2], sz[MAXM], tot, V, rt[MAXN];
int n, m, cur; LL sum[MAXM];
inline int Sign(int x) { return x > 0 ? 1 : -1; }
void modify(int &i, int p, int l, int r, int x, int val) {
i = ++tot;
sz[i] = sz[p] + val;
sum[i] = sum[p] + x*val;
if(l == r) return;
int mid = (l + r) >> 1;
if(x <= mid) ch[i][1] = ch[p][1], modify(ch[i][0], ch[p][0], l, mid, x, val);
else ch[i][0] = ch[p][0], modify(ch[i][1], ch[p][1], mid+1, r, x, val);
} LL query(int i, int l, int r, int x) {
if(l == r) return 1ll * l * x; //主席树查询叶节点要特判,因为自己有sz
if(sz[i] == x) return sum[i];
int mid = (l + r) >> 1;
if(sz[ch[i][0]] >= x) return query(ch[i][0], l, mid, x);
else return sum[ch[i][0]] + query(ch[i][1], mid+1, r, x-sz[ch[i][0]]);
}
int main () {
read(m), read(n);
for(int i = 1, s, e, p; i <= m; ++i) {
read(s), read(e), read(p);
a[++cur] = (task){ s, p };
a[++cur] = (task){ e+1, -p };
V = max(V, p);
}
sort(a + 1, a + cur + 1, cmp);
int now = 0;
for(int i = 1; i <= n; ++i) {
rt[i] = rt[i-1];
while(now < cur && a[now+1].x == i) {
++now;
modify(rt[i], rt[i], 1, V, abs(a[now].val), Sign(a[now].val));
}
}
LL lastans = 1, x, A, B, C, k;
for(int i = 1; i <= n; ++i) {
read(x), read(A), read(B), read(C);
k = (lastans * A + B) % C + 1;
printf("%lld\n", lastans=query(rt[x], 1, V, min(int(k), sz[rt[x]])));
}
}

最新文章

  1. 非本地跳转之setjmp与longjmp
  2. Scalaz(17)- Monad:泛函状态类型-State Monad
  3. 集成IOS 环信SDK
  4. 6.1-6.5关于html
  5. Opencv step by step - 加载视频
  6. Discuz 插件制作之后台常用函数详解
  7. [Angular 2] Injecting a Service
  8. onvif规范的实现:成功实现ONVIF协议RTSP-Video-Stream与OnvifDeviceManager的视频对接
  9. 事后诸葛亮分析(Beta版本)
  10. 三消游戏FSM状态机设计图
  11. 【linux日常】 ACL权限管理
  12. 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:&quot;java&quot;,&quot;txt&quot;)作为key, 用个数作为value,放入到map集合中,遍历map集合
  13. oracle中如何只查询一条复合条件的记录,即查到一条记录就返回(转)
  14. HKE和他的小朋友(矩乘快速幂)
  15. shell基础:环境变量
  16. Beta周第7次Scrum会议(11/16)【王者荣耀交流协会】
  17. Session原理
  18. HDU.5819.Knights(概率DP)
  19. 使用C#的泛型队列Queue实现生产消费模式
  20. XGBoost浅入浅出

热门文章

  1. uwp,c#,mediaElement与slider进度条绑定
  2. 第十三章 ZYNQ-MIZ701 TIMER定时器中断
  3. 训练技巧详解【含有部分代码】Bag of Tricks for Image Classification with Convolutional Neural Networks
  4. Invalid default value for &#39;time&#39;
  5. js面向对象的几种方式
  6. element之tree组件样式重写
  7. Matlab修改数值格式/精度/小数位数
  8. u-boot从nand 启动时的问题解决记录
  9. 集合篇-----ArrayList与LinkedList之间的那些小事
  10. IntelliJ IDEA + Maven iml文件中依赖项的需求是什么?