BZOJ 2161 布娃娃(权值线段树)
题意
给n<1e5个娃娃,每个娃娃有属性\(p\),\(c\),\(l\),\(r\)(均在ll范围内),问你对每个娃娃\(i\),满足所有\(l_j\leq p_i\leq r_j\)的娃娃\(j\)中第\(i\)大的\(c_i\)是多少
思路
离散化后
扫描线段上的所有点,对当前点覆盖的所有线段所在的娃娃的\(c_i\)建权值线段树,\(log\)查询即可
代码
int n;
int a[maxn];
ll C[maxn];
vector<ll>v;
int find(ll x){
return lower_bound(v.begin(),v.end(),x)-v.begin()+1;
}
ll P[maxn],L[maxn],R[maxn];
vector<ll>in[maxn],out[maxn],hv[maxn];
ll Padd, Pfirst, Pmod, Pprod, Cadd, Cfirst, Cmod, Cprod, Ladd, Lfirst, Lmod, Lprod, Radd, Rfirst, Rmod, Rprod;
void add(int p, int x, int l, int r, int root){
int mid = l+r>>1;
if(l==r){
a[root]+=x;return;
}
if(p<=mid)add(p,x,lson);
else add(p,x,rson);
a[root]=a[lc]+a[rc];
return;
}
int ask(int k, int l, int r, int root){
int mid = l+r>>1;
if(k>a[root])return 0;
if(l==r)return l;
if(a[rc]>=k)return ask(k,rson);
else return ask(k-a[rc],lson);
}
int main() {
scanf("%d", &n);
scanf("%lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld",&Padd,&Pfirst,&Pmod,&Pprod,&Cadd,&Cfirst,&Cmod,&Cprod,&Ladd,&Lfirst,&Lmod,&Lprod,&Radd,&Rfirst,&Rmod,&Rprod);
P[1]=Pfirst%Pmod;C[1]=Cfirst%Cmod;L[1]=Lfirst%Lmod;R[1]=Rfirst%Rmod;
for(int i = 1; i <= n; i++){
if(i>1){
P[i] = (P[i-1] * Pprod + Padd + i) % Pmod;
C[i] = (C[i-1] * Cprod + Cadd + i) % Cmod;
L[i] = (L[i-1] * Lprod + Ladd + i) % Lmod;
R[i] = (R[i-1] * Rprod + Radd + i) % Rmod;
}
}
for(int i = 1; i <= n; i++){
if(L[i]>R[i])swap(L[i],R[i]);
v.pb(P[i]);v.pb(C[i]);v.pb(L[i]);v.pb(R[i]+1);
}
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
for(int i = 1; i <= n; i++){
in[find(L[i])].pb(find(C[i]));
out[find(R[i]+1)].pb(find(C[i]));
hv[find(P[i])].pb(i);
}
int tot = v.size();
ll sum = 0;
for(int i = 1; i <= tot; i++){
for(int j = 0; j < (int)in[i].size(); j++){
add(in[i][j],1,1,tot,1);
}
for(int j = 0; j < (int)out[i].size(); j++){
add(out[i][j],-1,1,tot,1);
}
for(int j = 0; j < (int)hv[i].size(); j++){
int now = ask(hv[i][j],1,tot,1);
if(now)sum=(sum+v[now-1])%19921228;
}
}
printf("%lld",sum%19921228);
return 0;
}
BZOJ 2161 布娃娃(权值线段树)的更多相关文章
- 【bzoj2161】布娃娃 权值线段树
题目描述 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二代考神,这和小时候培养的良好素质是分不开的.雨荨的妈妈也为有这么一个懂事的女儿感到高兴.一 ...
- BZOJ_2161_布娃娃_权值线段树
BZOJ_2161_布娃娃_权值线段树 Description 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二 代考神,这和小时候培养的良好素质是 ...
- bzoj 2733: [HNOI2012]永无乡【并查集+权值线段树】
bzoj上数组开大会T-- 本来想用set瞎搞的,想了想发现不行 总之就是并查集,每个点开一个动态开点的权值线段树,然后合并的时候把值并在根上,询问的时候找出在根的线段树里找出k小值,看看这个值属于哪 ...
- [BZOJ 3295] [luogu 3157] [CQOI2011]动态逆序对(树状数组套权值线段树)
[BZOJ 3295] [luogu 3157] [CQOI2011] 动态逆序对 (树状数组套权值线段树) 题面 给出一个长度为n的排列,每次操作删除一个数,求每次操作前排列逆序对的个数 分析 每次 ...
- [BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树)
[BZOJ 3110] [luogu 3332] [ZJOI 2013]k大数查询(权值线段树套线段树) 题面 原题面有点歧义,不过从样例可以看出来真正的意思 有n个位置,每个位置可以看做一个集合. ...
- BZOJ 3110 ZJOI 2013 K大数查询 树套树(权值线段树套区间线段树)
题目大意:有一些位置.这些位置上能够放若干个数字. 如今有两种操作. 1.在区间l到r上加入一个数字x 2.求出l到r上的第k大的数字是什么 思路:这样的题一看就是树套树,关键是怎么套,怎么写.(话说 ...
- BZOJ 4605 崂山白花蛇草水(权值线段树+KD树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4605 [题目大意] 操作 1 x y k 表示在点(x,y)上放置k个物品, 操作 2 ...
- bzoj 4627: [BeiJing2016]回转寿司 -- 权值线段树
4627: [BeiJing2016]回转寿司 Time Limit: 10 Sec Memory Limit: 256 MB Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店. ...
- bzoj 1503: [NOI2004]郁闷的出纳员 -- 权值线段树
1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...
随机推荐
- docker-管理数据
管理Docker中的数据 默认情况下,在容器内创建的所有文件都存储在可写容器层中.这意味着: 当该容器不再运行时,数据不会持久存在,如果另一个进程需要,则可能很难从容器中获取数据. 容器的可写层紧密耦 ...
- ocx控件的坑
前言 这还是第一次写博客,以前太懒了,现在发现是很有必要记录下这些经验和问题的.最近项目中有个需求(报表单据需要客户签名,连接签字板,把签名单据同步到服务器上),需要和硬件交互,当时硬件商提供了ocx ...
- IDEA 配置及常用快捷键
常用快捷键 1.Ctrl+Alt+T 把选择的代码放入 try{} 或者 if{} 里 2.Ctrl+O 重写方法提示 3.Alt+回车 导包提示 4.Alt+/ 代码提示(默认不是这个,需要参照后文 ...
- Android/Unity大乱斗-完整双方集成交互指南
这是一个很长很长的story!-芝麻粒儿创作 开篇 源码地址:GitHub 本文目的,将Unity集成到Android端,学完本文后你可以做到 Android任意布局加载Unity 3D场景 任意操作 ...
- OpenStack Identity API v3
Table Of Contents OpenStack Identity API v3 What’s New in Version 3.7 What’s New in Version 3.6 What ...
- web实现点击左侧导航,右侧加载不同的网页(这种布局多用于后台管理系统)
(1)实现方法:采用ajax实现点击左侧菜单,右侧加载不同网页(在整个页面无刷新的情况下实现右侧局部刷新,用到ajax注意需要在服务器环境下运行,从HBuilder自带的服务器中打开浏览效果即可) ( ...
- golang 服务大量 CLOSE_WAIT 故障排查
事故经过 排查 总结 事故经过 [2019-12-27 18:00 周五] 业务方突然找来说调用我们程序大量提示"触发限流",但是我们没有收到任何监控报警.紧急查看了下 Servi ...
- EFCore-脚手架Scaffold发生Build Failed问题的终极解决
大家在使用EntityFrameworkCore的DBFirst的脚手架(Scaffolding)时应该遇到过Build Failed的错误,而没有任何提示,我也遇到过不少次,目前已经完美解决并将排查 ...
- URL方案最佳做法|高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼
使 URL整洁和人性化 GET(安全交互)和POST(不安全交互):选用正确的一个.
- Java容器解析系列(16) android内存优化之SparseArray
HashMap的缺点: 自动装箱导致的性能损失; 使用拉链法来解决hash冲突,如果hash冲突较多,需要遍历链表,导致性能下降,在Java 8 中,如果链表长度>8,会使用红黑树来代替链表; ...