bzoj2161: 布娃娃
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<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: 布娃娃的更多相关文章
- BZOJ2161: 布娃娃 整体二分
Code: #include <cstdio> #include <algorithm> #include <cstring> #include <vecto ...
- 【主席树】【bzoj2161】[hdu4348]
#include<cstdio> #include<algorithm> #include<cstring> #define N 400000 using name ...
- 【BZOJ2161】布娃娃 扫描线+线段树
[BZOJ2161]布娃娃 Description 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二代考神,这和小时候培养的良好素质是分不开的.雨荨 ...
- 【bzoj2161】布娃娃 权值线段树
题目描述 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二代考神,这和小时候培养的良好素质是分不开的.雨荨的妈妈也为有这么一个懂事的女儿感到高兴.一 ...
- Unity Ragdoll(布娃娃系统)
逼真的动作如何实现的? 在一些游戏中当NPC或玩家死亡的时候,死亡的肢体动作十分逼真,这一物理现象如何用Unity来实现呢?Unity物理引擎中的Ragdoll系统,可以用来创建这种效果,具体请参阅以 ...
- BZOJ_2161_布娃娃_权值线段树
BZOJ_2161_布娃娃_权值线段树 Description 小时候的雨荨非常听话,是父母眼中的好孩子.在学校是老师的左右手,同学的好榜样.后来她成为艾利斯顿第二 代考神,这和小时候培养的良好素质是 ...
- unity3d中布娃娃系统
原地址:http://blog.csdn.net/pizi0475/article/details/9771941 转自: http://forum.mirax.com.tw/unity/viewto ...
- 两分钟学会Unity3D布娃娃的使用
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangbin_jxust/article/details/28587233 在RPG游戏中,为了让人 ...
- BZOJ 2161 布娃娃 (主席树)
题面 想了一个主席树做法 我们把每个区间的两个端点拆开 对$L,R$分别从小到大排序,分别从左到右依次把对应标号的$c_{i}$插入到权值主席树里 每次查询$p_{i}$,在排序后的$L,R$数组上分 ...
随机推荐
- xss挑战赛小记 0x03(xssgame)
0x00 继续做xss吧 这次是xssgame 地址 http://www.xssgame.com/ 一共八关 学到了很多东西 0x01 啥也没有 <svg/onload="alert ...
- android去掉button默认的点击阴影
查了资料,发现别人都是说加一个style属性. style="?android:attr/borderlessButtonStyle" 加上了确实管用,但是我绝不是不求甚解的人.追 ...
- Yarn 命令详解
常用命令 创建项目:yarn init 安装依赖包:yarn == yarn install 添加依赖包:yarn add 配置淘宝镜像:yarn config set registry " ...
- Cassandra - Insert after Delete fails silently
在delete一条数据后,再insert 相同内容的数据,结果看起来是成功的,但是当你去查找这个数据,却没有任何内容,整个过程并且没有任何异常提示. 这往往发生在单元测试的时候,我们反复清理和写入数据 ...
- 相关系数之杰卡德相似系数(Jaccardsimilarity coefficient)
杰卡德相似系数(Jaccardsimilarity coefficient) (1)杰卡德相似系数 两个集合A和B交集元素的个数在A.B并集中所占的比例,称为这两个集合的杰卡德系数,用符号 J(A,B ...
- struts2 action中获取request session application的方法
共四种方式: 其中前两种得到的是Map<String,Object> 后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] ...
- Week1 Team Homework #1 from Z.XML-总结学长经验教训
谭传奇学长: 我们的弯路可能是,一开始没有从最基础的部分开始迭代开发,一开始就想的太远了一些,每一步开的有点太大了,所以可能有些东西最后就连不上,也没有能够按时完成.如果可以先做出一个能用的版本,然后 ...
- [转]如何清空Chrome缓存和Cookie
当您使用浏览器(例如 Chrome)时,浏览器会将网站中的一些信息保存在其缓存和 Cookie 中. 清除这些内容可以解决某些问题,例如网站上的加载或格式设置问题. 在 Chrome 中 在计算机上打 ...
- Android EditText 限制输入字符
今天为简单的登录界面的输入框(用户名.密码框,验证码),均为EditText框,做输入限制,不能有空格,不能有一些特殊字符,不多说,直接上代码: /** * 禁止EditText输入空格 * * @p ...
- js获取上传文件内容
js 获取上传文件的字节数及内容 <div> 上传文件 : <input type="file" name = "file" id = &qu ...