Description

小时候的雨荨非常听话,是父母眼中的好孩子。在学校是老师的左右手,同学的好榜样。后来她成为艾利斯顿第二
代考神,这和小时候培养的良好素质是分不开的。雨荨的妈妈也为有这么一个懂事的女儿感到高兴。一次期末考试
,雨荨不知道第多少次,再次考了全年级第一名。雨荨的妈妈看到女儿100分的成绩单时,脸上又泛起了幸福的笑
容,作为奖励,她给雨荨买了n个布娃娃。细心的雨荨发现,第i个布娃娃有一个耐心值P[i]以及一个魅力值C[i],
并且还有能够忍受的耐心值的上限R[i]以及下限L[i]。当一个布娃娃j满足L[j]<=P[i]并且P[i]<=R[j],那么布娃
娃j喜欢布娃娃i。雨荨还发现,一个布娃娃有可能喜欢它自己。每个布娃娃心中都有一个谜团,具体来说就是:第
i个布娃娃想知道喜欢它的布娃娃中,魅力值第i大的布娃娃的魅力值是多少,并且称这个布娃娃的谜团答案为这个
魅力值的大小,如果不存在,那么这个布娃娃的谜团答案为0。鉴于雨荨的上司栋栋不让题目的数据过大,下面给
出数据的生成方法:给出16个参数:
Padd, Pfirst, Pmod, Pprod, Cadd, Cfirst, Cmod, Cprod, Ladd, Lfirst, Lmod, Lprod, Radd, Rfirst, Rmod, Rprod。
----------------------------------------------------------------------------------------
P[1] = Pfirst % Pmod, P[i] = (P[i-1]   Pprod + Padd + i) % Pmod (i > 1)。
----------------------------------------------------------------------------------------
对于C、L、R数组也有类似的得到方式, %代表取余运算。注意:L和R数组生成完之后,如果某个布娃娃的忍耐度上
限小于下限,那么交换它的上限和下限。当然,雨荨也不会让你告诉她每个布娃娃的谜团答案,因为那样会使输出
数据很大。所以雨荨希望你告诉她,所有布娃娃谜团答案的和除以19921228的余数是多少。

Input

输入的第一行有一个整数n,代表布娃娃的个数。
输入的第二行有16个用空格隔开的整数
分别代表Padd,Pfirst,Pmod,Pprod,Cadd,Cfirst,Cmod,Cprod,Ladd,Lfirst,Lmod,Lprod,Radd,Rfirst,Rmod,Rprod。
16个参数均为1到100,000,000中的整数。
 

Output

输出一个整数,代表所有布娃娃谜团答案的和除以19921228的余数。

Sample Input

3
2 3 4 3 1 4 5 2 3 6 9 1 1 2 3 4

Sample Output

4
 
题解:
  题意等价于求能覆盖某个点的所有区间中第K大的值,这个就可以用扫描线+splay去求
code:
 #include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
char ch; bool ok;
void read(int &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
const int maxn=;
const int inf=0x3f3f3f3f;
const int MOD=;
int add,first,mod,prod,tmp[][maxn];
int n,idx,ans;
struct Data{
int x,id,op;
}list[maxn*];
bool operator<(const Data &a,const Data &b){
if (a.x!=b.x) return a.x<b.x;
return a.op<b.op;
}
struct Splay{
#define ls son[x][0]
#define rs son[x][1]
int root,fa[maxn],son[maxn][],siz[maxn],val[maxn];
void init(){
root=n+,siz[n+]=,val[n+]=inf,son[n+][]=n+;
siz[n+]=,val[n+]=-inf,fa[n+]=n+;
}
int which(int x){return son[fa[x]][]==x;}
void updata(int x){siz[x]=siz[ls]++siz[rs];}
void rotate(int x){
int y=fa[x],z=fa[y],d=which(x),dd=which(y);
fa[son[x][d^]]=y,son[y][d]=son[x][d^],fa[x]=z;
if (z) son[z][dd]=x;
son[x][d^]=y,fa[y]=x,updata(y);
}
void splay(int x){
while (fa[x]){
if (!fa[fa[x]]) rotate(x);
else if (which(fa[x])==which(x)) rotate(fa[x]),rotate(x);
else rotate(x),rotate(x);
}
updata(x),root=x;
}
void insert(int x,int v){
fa[x]=son[x][]=son[x][]=,siz[x]=,val[x]=v;
int f,t;
for (f=t=root;t;f=t,t=son[t][v<val[t]]);
fa[x]=f,son[f][v<val[f]]=x,splay(x);
}
int find_left(int x){for (;son[x][];x=son[x][]);return x;}
void _delete(int x){
splay(x);
int y=find_left(son[x][]);
fa[ls]=fa[rs]=,splay(y),fa[ls]=y,son[y][]=ls,updata(y);
}
int find_kth(int x,int k){
if (!x) return ;
if (siz[ls]>=k) return find_kth(ls,k);
if (siz[ls]+==k) return x;
return find_kth(rs,k-siz[ls]-);
}
int query(int k){
int x=find_kth(root,k+);
if (<=x&&x<=n) return val[x];
return ;
}
}T;
int main(){
read(n);
for (int op=;op<;op++){
read(add),read(first),read(mod),read(prod);
tmp[op][]=first%mod;
for (int i=;i<=n;i++) tmp[op][i]=(1LL*tmp[op][i-]*prod+add+i)%mod;
}
for (int i=;i<=n;i++) if (tmp[][i]>tmp[][i]) swap(tmp[][i],tmp[][i]);
for (int i=;i<=n;i++) list[++idx]=(Data){tmp[][i],i,};
for (int i=;i<=n;i++) list[++idx]=(Data){tmp[][i],i,};
for (int i=;i<=n;i++) list[++idx]=(Data){tmp[][i],i,};
sort(list+,list+idx+),T.init();
for (int i=;i<=idx;i++){
int id=list[i].id,op=list[i].op;
if (op==) T.insert(id,tmp[][id]);
else if (op==) ans+=T.query(id),ans%=MOD;
else if (op==) T._delete(id);
}
printf("%d\n",ans);
return ;
}

bzoj2161: 布娃娃的更多相关文章

  1. BZOJ2161: 布娃娃 整体二分

    Code: #include <cstdio> #include <algorithm> #include <cstring> #include <vecto ...

  2. 【主席树】【bzoj2161】[hdu4348]

    #include<cstdio> #include<algorithm> #include<cstring> #define N 400000 using name ...

  3. 【BZOJ2161】布娃娃 扫描线+线段树

    [BZOJ2161]布娃娃 Description 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二代考神,这和小时候培养的良好素质是分不开的.雨荨 ...

  4. 【bzoj2161】布娃娃 权值线段树

    题目描述 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二代考神,这和小时候培养的良好素质是分不开的.雨荨的妈妈也为有这么一个懂事的女儿感到高兴.一 ...

  5. Unity Ragdoll(布娃娃系统)

    逼真的动作如何实现的? 在一些游戏中当NPC或玩家死亡的时候,死亡的肢体动作十分逼真,这一物理现象如何用Unity来实现呢?Unity物理引擎中的Ragdoll系统,可以用来创建这种效果,具体请参阅以 ...

  6. BZOJ_2161_布娃娃_权值线段树

    BZOJ_2161_布娃娃_权值线段树 Description 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二 代考神,这和小时候培养的良好素质是 ...

  7. unity3d中布娃娃系统

    原地址:http://blog.csdn.net/pizi0475/article/details/9771941 转自: http://forum.mirax.com.tw/unity/viewto ...

  8. 两分钟学会Unity3D布娃娃的使用

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangbin_jxust/article/details/28587233 在RPG游戏中,为了让人 ...

  9. BZOJ 2161 布娃娃 (主席树)

    题面 想了一个主席树做法 我们把每个区间的两个端点拆开 对$L,R$分别从小到大排序,分别从左到右依次把对应标号的$c_{i}$插入到权值主席树里 每次查询$p_{i}$,在排序后的$L,R$数组上分 ...

随机推荐

  1. 521. [NOIP2010] 引水入城 cogs

    521. [NOIP2010] 引水入城 ★★★   输入文件:flow.in   输出文件:flow.out   简单对比时间限制:1 s   内存限制:128 MB 在一个遥远的国度,一侧是风景秀 ...

  2. Java Set集合(HashSet、TreeSet)

    什么是HashSet?操作过程是怎么样的? 1.HashSet底层实际上是一个HashMap,HashMap底层采用了哈希表数据结构 2.哈希表又叫做散列表,哈希表底层是一个数组,这个数组中每一个元素 ...

  3. Python 3基础教程27-字典

    这篇来介绍Python中的字典.字典一般用大括号包裹起来,里面的元素都是有键和值组成. # 字典 # 我们随便设计几个城市的明天的最高温度tem ={'北京':22,'上海':23,'深圳':24,' ...

  4. Windows Server2003下安装IIS服务脑图

    在练习过程中,勾选“ASP.NET”后开始安装时提示要插入安装光盘,但是我安装系统时是用镜像文件在虚拟机里安装的,所以根据提示界面的提示从文件中选择相应文件复制,如下图点击确定,选择iisapp.vb ...

  5. [Effective Java] 创建和销毁对象篇

    [Effective Java] 创建和销毁对象篇 1. 优先考虑用静态工厂方法代替构造器 优点: - 静态工厂方法相比于构造器,它们有名称 - 不需要每次在使用的时候创建一个对象 - 可以返回原返回 ...

  6. Daily Scrum02 12.05

    deadline果然是第一生产力...这学期一下子4~5个大的Project.然后截止日期都在近期.所有的组员都很辛苦!大家加油~ 这个scrum是当天过后一天补上的.因为当前负责的同学正在忙于编译大 ...

  7. 在网站中配置MIME类型

    经常会遇到这样的情况,某种类型的文件不能够正常下载,*.7z,自定义的文件类型等,需要在配置文件里配置后才能正常下载. 打开Web.Config文件: <system.webServer> ...

  8. Spring和SpringMVC配置中父子WebApplicationContext的关系

    一.前言 有这么一个故事:一辆装满石头的板车,一根绳子系着,起初绳子没有拉直,拉绳的人以为很轻,等真的绷直了才发现自己的力气根本不够~人往往喜欢得过且过,但是有些东西真的是绕不过的,所以现在必须努力的 ...

  9. javasisst & JAVA8

    今天在服务器上启动tomcat7的时候,提示如下异常: java.io.IOException: invalid constant type: 15 具体看是javasisst抛出来的. 系统运行环境 ...

  10. Java IO 小结

    Java IO 的学习需要明白流设计的体系结构,这样才能在实际需要的时候,通过API文档查阅,快速实现功能.