BZOJ3932(主席树上二分+差分
按时间作为主席树的版本,每个版本的主席树都是一个权值线段树。
差分消去时间影响
对于当前时间版本的主席树查询前K大即可。
树上二分时结束后切记判定l==r的状态(易错
l==r叶子节点可能存在多个值(值大小为sum/siz )
用I64dOLE了好久 。。 。。。。 。 。。 。 。 。 。 。 。 。 。。 。
用bit/stdc++.h CE.....
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = ;
const int LOGN = ;
const int maxn = N*LOGN;
#define lson son[rt][0]
#define rson son[rt][1]
#define un(x) (x>0?x:-x)
struct node{
int pos,val;
};
node cf[N<<];
ll sum[maxn],siz[maxn];
int son[maxn][],root[N],id[N];
void pushup(int rt)
{
siz[rt] = siz[lson]+siz[rson];
sum[rt] = sum[lson]+sum[rson];
}
int tot = ;
void update(int x,int& y,int l,int r,int p)
{
y = ++tot;
if(l==r)
{
if(p>) siz[y] = siz[x]+;
else siz[y] = siz[x]-;
sum[y] = sum[x]+p;
return ;
}
son[y][] = son[x][];
son[y][] = son[x][];
int m = (r+l)>>;
if(un(p)<=m) update(son[x][],son[y][],l,m,p);
else update(son[x][],son[y][],m+,r,p);
pushup(y); }
ll bfind(int l,int r,int rt,int k)
{
//cout<<"size:: "<<siz[rt]<<sum[rt]<<endl;
if(siz[rt]<=k) return sum[rt];
ll ans = ;
while(l<r)
{
int m = (r+l)>>;
if(k<siz[lson])
{
r = m;
rt = lson;
}
else{
l = m+;
k -= siz[lson];
ans+=sum[lson];
rt = rson;
}
}
if(k&&siz[rt]>) ans+=sum[rt]/siz[rt]*min(k,siz[rt]);
return ans;
}
bool cmp(node a,node b)
{
return a.pos<b.pos;
}
int main()
{
int n,m;
scanf("%d%d",&m,&n);
int s,e,p;
int lim = ;
int cnt = ;
for(int i=;i<m;i++){
scanf("%d%d%d",&s,&e,&p);
cf[++cnt] = (node){s,p};
cf[++cnt] = (node){e+,-p};
lim = max(lim,p);
}
sort(cf+,cf+cnt+,cmp);
ll pre = ;
for(int i=;i<=cnt;i++)update(root[i-],root[i],,lim,cf[i].val);
for(int i=cnt;i>=;i--){
if(cf[i].pos!=cf[i+].pos) id[cf[i].pos] = i;
}
for(int i=;i<=n;i++){
if(id[i]==)id[i] = id[i-];
//cout<<id[i]<<endl;
}
int x,a,b,c,k;
for(int i=;i<n;i++)
{
scanf("%d%d%d%d",&x,&a,&b,&c);
k = (a*pre+b)%c+;
pre = bfind(,lim,root[id[x]],k);
//cout<<x<<" "<<id[x]<<" ";
printf("%lld\n",pre);
}
return ;
}
AC代码
BZOJ3932(主席树上二分+差分的更多相关文章
- 【主席树上二分】bzoj5361: [Lydsy1805月赛]对称数
随机化选讲例题 题目大意 小 Q 认为,偶数具有对称美,而奇数则没有.给定一棵 n 个点的树,任意两点之间有且仅有一条直接或间接路径.这些点编号依次为 1 到 n,其中编号为 i 的点上有一个正整数 ...
- BZOJ 1926: [Sdoi2010]粟粟的书架(主席树,二分答案)
BZOJ 1926: [Sdoi2010]粟粟的书架(主席树,二分答案) 题意 : 给你一个长为\(R\)宽为\(C\)的矩阵,第\(i\)行\(j\)列的数为\(P_{i,j}\). 有\(m\)次 ...
- LOJ 2551 「JSOI2018」列队——主席树+二分
题目:https://loj.ac/problem/2551 答案是排序后依次走到 K ~ K+r-l . 想维护一个区间排序后的结果,使得可以在上面二分.求和:二分可以知道贡献是正还是负. 于是想用 ...
- uoj#402. 【CTSC2018】混合果汁(主席树+二分)
传送门 我们先把果汁按照美味度排序,枚举\(d\),那么肯定是贪心的选择美味程度不小于\(d\)的且最便宜的果汁 发现\(d\)可以二分,那么在主席树上二分就可以了 据说还有整体二分的大佬然而我并不会 ...
- 计蒜客 38229.Distance on the tree-1.树链剖分(边权)+可持久化线段树(区间小于等于k的数的个数)+离散化+离线处理 or 2.树上第k大(主席树)+二分+离散化+在线查询 (The Preliminary Contest for ICPC China Nanchang National Invitational 南昌邀请赛网络赛)
Distance on the tree DSM(Data Structure Master) once learned about tree when he was preparing for NO ...
- [BZOJ3932][CQOI2015]任务查询系统(差分+主席树)
题面 分析 对于一个区间修改(s,e,v),我们可以将它差分,这样就变成了单点修改s和e+1(s插入,t+1删除) 我们用主席树维护差分数组的前缀和,第i棵主席树维护区间[1,i]之间的所有差分值 那 ...
- bzoj 2653: middle (主席树+二分)
2653: middle Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 2522 Solved: 1434[Submit][Status][Disc ...
- LOJ 3059 「HNOI2019」序列——贪心与前后缀的思路+线段树上二分
题目:https://loj.ac/problem/3059 一段 A 选一个 B 的话, B 是这段 A 的平均值.因为 \( \sum (A_i-B)^2 = \sum A_i^2 - 2*B \ ...
- P3066 [USACO12DEC]逃跑的BarnRunning Away From (树上二分)
题意 给出以1号点为根的一棵有根树,问每个点的子树中与它距离小于等于l的点有多少个. 树上二分.这个做法还是基于树上差分的,也就是对于每一个点uu,我们要找到它向上跳LL的长度最高能够跳到的祖先.(当 ...
随机推荐
- CF17E Palisection(回文自动机)
题意翻译 给定一个长度为n的小写字母串.问你有多少对相交的回文子 串(包含也算相交) . 输入格式 第一行是字符串长度n(1<=n<=2*10^6),第二行字符串 输出格式 相交的回文子串 ...
- sap smartform 打印乱码问题
在smartforms打印的时候会遇到中英文结合的form 有时候系统会处理时出现乱码 有时不会 不知道是系统的事情还是配置的事情 现在是我的解决办法 因为是中英文结合 在中文环境建立form ...
- Zookeeper下载方法
Zookeeper官网地址:http://zookeeper.apache.org/ Zookeeper下载链接:http://mirrors.tuna.tsinghua.ed ...
- django进阶之缓存
Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...
- PAT甲级——1094 The Largest Generation (树的遍历)
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/93311728 1094 The Largest Generati ...
- 前端实现Tab切换栏
tab切换,所需的 UI 只有两组元素 - Header 和 Tab,下面介绍几种不同的实现方法和他们的优缺点 本文主要说一些 CSS 的实现方法.最好的方法是 第四种 => label + i ...
- 牛客假日团队赛1B.便便传送门(一)
链接:https://ac.nowcoder.com/acm/contest/918/B 题意: Farmer John最讨厌的农活是运输牛粪.为了精简这个过程,他制造了一个伟大的发明:便便传送门!与 ...
- java——方法重载与重写、构造方法、this关键字、static关键字、strictfp关键字、类的导入
Java SE5新增加@Override注解,它并不是关键字,但是可以把它当作关键字使用.当你想要覆写(重写)某个方法时,可以选择添加这个注解,在你不留心重载而并非覆写了该方法时,编译器就会生成一条错 ...
- JAVA多线程之Volatiles
Java 语言中的 volatile 变量可以被看作是一种 “轻量级的 synchronized”:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但 ...
- 影子内存(Shadow RAM)介绍_4
影子内存(Shadow RAM,或称ROM shadow)是为了提高系统效率而采用的一种专门技术.它把系统主板上的系统ROM BIOS和适配器卡上的视频ROM BIOS等拷贝到系统RAM内存中去运行, ...