BZOJ_2161_布娃娃_权值线段树
BZOJ_2161_布娃娃_权值线段树
Description
Input
Output
输出一个整数,代表所有布娃娃谜团答案的和除以19921228的余数。
Sample Input
2 3 4 3 1 4 5 2 3 6 9 1 1 2 3 4
Sample Output
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 200050
#define maxn 100000000
int t[N*35],ls[N*35],rs[N*35],cnt,n,ans,tot;
struct A {
int l,r,p,c;
}a[N];
struct P {
int p,flg,id;
P() {}
P(int p_,int f_,int id_) :
p(p_),flg(f_),id(id_) {}
}d[N<<1];
bool cmp(const P &x,const P &y) {
if(x.p==y.p) return x.flg<y.flg;
return x.p<y.p;
}
void update(int l,int r,int x,int v,int &p) {
if(!p) p=++tot;
t[p]+=v;
if(l==r) return ;
int mid=(l+r)>>1;
if(x<=mid) update(l,mid,x,v,ls[p]);
else update(mid+1,r,x,v,rs[p]);
}
int qk(int l,int r,int k,int p) {
if(l==r) return l;
int mid=(l+r)>>1;
if(k<=t[ls[p]]) return qk(l,mid,k,ls[p]);
else return qk(mid+1,r,k-t[ls[p]],rs[p]);
}
int main() {
int pad,pfi,pmod,prd,cad,cfi,cmod,crd,lad,lfi,lmod,lrd,rad,rfi,rmod,rrd;
register int i;
scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&n,&pad,&pfi,&pmod,&prd,&cad,&cfi,&cmod,&crd,&lad,&lfi,&lmod,&lrd,&rad,&rfi,&rmod,&rrd);
a[1].p=pfi%pmod;
a[1].c=cfi%cmod;
a[1].l=lfi%lmod;
a[1].r=rfi%rmod;
// if(a[1].l>a[1].r) swap(a[1].l,a[1].r);
// d[++cnt]=P(a[1].l,1,1);
// d[++cnt]=P(a[1].r+1,2,1);
// d[++cnt]=P(a[1].p,3,1);
// printf("i=%d, l=%d r=%d p=%d c=%d\n",1,a[1].l,a[1].r,a[1].p,a[1].c);
for(i=2;i<=n;i++) {
a[i].p=(1ll*a[i-1].p*prd+pad+i)%pmod;
a[i].c=(1ll*a[i-1].c*crd+cad+i)%cmod;
a[i].l=(1ll*a[i-1].l*lrd+lad+i)%lmod;
a[i].r=(1ll*a[i-1].r*rrd+rad+i)%rmod;
// if(a[i].l>a[i].r) swap(a[i].l,a[i].r);
// printf("i=%d, l=%d r=%d p=%d c=%d\n",i,a[i].l,a[i].r,a[i].p,a[i].c);
// d[++cnt]=P(a[i].l,1,i);
// d[++cnt]=P(a[i].r+1,2,i);
// d[++cnt]=P(a[i].p,3,i);
}
for(i=1;i<=n;i++) {
if(a[i].l>a[i].r) swap(a[i].l,a[i].r);
d[++cnt]=P(a[i].l,1,i);
d[++cnt]=P(a[i].r+1,2,i);
d[++cnt]=P(a[i].p,3,i);
}
// puts("-----------------------------------");
int now=0,root=0;
sort(d+1,d+cnt+1,cmp);
for(i=1;i<=cnt;i++) {
// printf("i=%d, p=%d flg=%d id=%d\n",i,d[i].p,d[i].flg,d[i].id);
if(d[i].flg==1) {
now++;
update(0,maxn,a[d[i].id].c,1,root);
}else if(d[i].flg==2) {
now--;
update(0,maxn,a[d[i].id].c,-1,root);
}else {
if(now>=d[i].id) {
(ans+=qk(0,maxn,now-d[i].id+1,root))%=19921228;
}
}
}
printf("%d\n",ans);
}
BZOJ_2161_布娃娃_权值线段树的更多相关文章
- BZOJ_3685_普通van Emde Boas树_权值线段树
BZOJ_3685_普通van Emde Boas树_权值线段树 Description 设计数据结构支持: 1 x 若x不存在,插入x 2 x 若x存在,删除x 3 输出当前最小值,若不存 ...
- B20J_2733_[HNOI2012]永无乡_权值线段树合并
B20J_2733_[HNOI2012]永无乡_权值线段树合并 Description:n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到 n来表示.某些 ...
- BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树
BZOJ_1503_[NOI2004]郁闷的出纳员_权值线段树 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资. ...
- [bzoj2733][HNOI2012]永无乡_权值线段树_线段树合并
永无乡 bzoj-2733 HNOI-2012 题目大意:题目链接. 注释:略. 想法: 它的查询操作非常友善,就是一个联通块内的$k$小值. 故此我们可以考虑每个联通块建一棵权值线段树. 这样的话每 ...
- [jdoj1258]野生动物园(change by panxf)_权值线段树_组合数
人品计算 题目大意:n个数的a序列,m组询问.每次询问给出T,A,B,K.求在a序列的[A,B]的位置之内的K小值P,的$C_{T}^{P \% T} \% 10111$. 注释:每组询问保证区间只相 ...
- 3065: 带插入区间K小值_树套树_替罪羊树_权值线段树
经过周六一天,周一3个小时的晚自习,周二2个小时的疯狂debug,终于凭借自己切掉了这道树套树题. Code: #include <cstdio> #include <algorit ...
- 【bzoj2161】布娃娃 权值线段树
题目描述 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二代考神,这和小时候培养的良好素质是分不开的.雨荨的妈妈也为有这么一个懂事的女儿感到高兴.一 ...
- [bzoj3196][Tyvj1730]二逼平衡树_树套树_位置线段树套非旋转Treap/树状数组套主席树/权值线段树套位置线段树
二逼平衡树 bzoj-3196 Tyvj-1730 题目大意:请写出一个维护序列的数据结构支持:查询给定权值排名:查询区间k小值:单点修改:查询区间内定值前驱:查询区间内定值后继. 注释:$1\le ...
- BZOJ 2161 布娃娃(权值线段树)
题意 给n<1e5个娃娃,每个娃娃有属性\(p\),\(c\),\(l\),\(r\)(均在ll范围内),问你对每个娃娃\(i\),满足所有\(l_j\leq p_i\leq r_j\)的娃娃\ ...
随机推荐
- 如何用Python网络爬虫爬取网易云音乐歌曲
今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将网易云歌词抓取下来已经不再话下了,在抓取歌词的时候在函数中传入了歌手ID和歌曲名两 ...
- 使用 Helm - 每天5分钟玩转 Docker 容器技术(163)
Helm 安装成功后,可执行 helm search 查看当前可安装的 chart. 这个列表很长,这里只截取了一部分.大家不禁会问,这些 chart 都是从哪里来的? 前面说过,Helm 可以像 a ...
- SQLServer2PostgreSQL迁移过程中的几个问题
1.PostgreSQL 跨平台迁移工具Migration Toolkit的使用指南:http://www.enterprisedb.com/docs/en/8.4/mtkguide/Table%20 ...
- 关于Apple开发者的D-U-N-S Number
企业开发者需要这个信息,中文译名叫邓白氏编码,很多攻略给的那个申请地址已经失效,这个组织官方也有地址可以提交申请资料,不过得注册,苹果目前可用的地址是:https://developer.apple. ...
- ng-change事件中如何获取$event和如何在子元素事件中阻止调用父级元素事件(阻止事件冒泡)
闲聊: 今天小颖要实现一个当改变了select内容后弹出一个弹框,并且点击select父元素使得弹框消失,这就得用到阻止事件的冒泡了:$event.stopPropagation(),然而小颖发现,在 ...
- java反射机制,以及对反射机制的了解,如有差池欢迎点评(初学者勿喷)
本人学习java时间不长,但是对java很感兴趣,知道有博客园这个平台果断的注册,记录我的java成长日记,这也是我的处女作,虽然很菜但是还是希望大家能见证我的成长,觉得可以的可以和我讨论一起学习 在 ...
- Bootstrap在线引用css和js
百度在线调用 <script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></ ...
- webpack4:连奏中的进化
webpack4在2月底的时候发布,这次webpack4有了一个名字"Legato",也就是"连奏"的意思,寓意webpack在不断进化,而且是无缝(no-ga ...
- 使用 Swoole 来加速你的 Laravel 应用
Swoole 是为 PHP 开发的生产级异步编程框架. 他是一个纯 C 开发的扩展, 他允许 PHP 开发者在 PHP 中写 高性能,可扩展的并发 TCP, UDP, Unix socket, HTT ...
- PAT1093: Count PAT's
1093. Count PAT's (25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Peng The strin ...