[nowcoder5669E]Eliminate++

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 1000005
4 #define L (k<<1)
5 #define R (L+1)
6 #define mid (l+r>>1)
7 struct sta{
8 int x,y;
9 };
10 struct ji{
11 int k;
12 sta a[2];
13 }o,o0,o1;
14 struct type{
15 ji p0,p1;
16 }f[N<<2];
17 int t,n,a[N],id[N],ans[N];
18 sta merge(sta x,sta y){
19 sta z;
20 z.x=x.x+max(y.x-x.y,0);
21 z.y=(y.y+max(x.y-y.x,0)-1)%2+1;
22 return z;
23 }
24 type merge(type x,type y){
25 type z;
26 z.p0.k=x.p0.k+y.p0.k;
27 z.p1.k=x.p1.k+y.p1.k;
28 z.p0.a[0]=merge(x.p0.a[0],y.p0.a[0]);
29 z.p0.a[1]=merge(y.p0.a[1],x.p0.a[1]);
30 z.p1.a[0]=merge(x.p1.a[0],y.p1.a[0]);
31 z.p1.a[1]=merge(y.p1.a[1],x.p1.a[1]);
32 return z;
33 }
34
35 void build(int k,int l,int r){
36 if (l==r){
37 f[k]=type{o0,o1};
38 return;
39 }
40 build(L,l,mid);
41 build(R,mid+1,r);
42 f[k]=merge(f[L],f[R]);
43 }
44 void update(int k,int l,int r,int x){
45 if (l==r){
46 f[k]=type{o1,o0};
47 return;
48 }
49 if (x<=mid)update(L,l,mid,x);
50 else update(R,mid+1,r,x);
51 f[k]=merge(f[L],f[R]);
52 }
53 type query(int k,int l,int r,int x,int y){
54 if ((l>y)||(x>r))return type{o,o};
55 if ((x<=l)&&(r<=y))return f[k];
56 return merge(query(L,l,mid,x,y),query(R,mid+1,r,x,y));
57 }
58 bool pd(type k,int p,int x){
59 if (!x)return k.p0.a[p].x>k.p0.a[p].y;
60 if (x==1)return k.p1.a[p].x>k.p1.a[p].y;
61 if (x==2){
62 if (k.p0.k==k.p1.k)return 1;
63 if (k.p0.k<k.p1.k)return k.p0.a[p].x>=k.p0.a[p].y;
64 return k.p1.a[p].x>=k.p1.a[p].y;
65 }
66 }
67 int main(){
68 o0.a[0].y=o0.a[1].y=1;
69 o1.k=o1.a[0].x=o1.a[1].x=1;
70 scanf("%d",&t);
71 while (t--){
72 scanf("%d",&n);
73 for(int i=1;i<=n;i++){
74 scanf("%d",&a[i]);
75 ans[i]=0;
76 id[a[i]]=i;
77 }
78 build(1,1,n);
79 for(int i=1;i<=n;i++){
80 update(1,1,n,id[i]);
81 type x=query(1,1,n,1,id[i]-1),y=query(1,1,n,id[i]+1,n);
82 if ((pd(x,0,0))&&(pd(y,1,1))||(pd(x,0,1))&&(pd(y,1,0))||(pd(x,0,2))&&(pd(y,1,2)))ans[id[i]]=1;
83 }
84 for(int i=1;i<=n;i++)printf("%d",ans[i]);
85 printf("\n");
86 }
87 }
[nowcoder5669E]Eliminate++的更多相关文章
- Effective Java 06 Eliminate obsolete object references
NOTE Nulling out object references should be the exception rather than the norm. Another common sour ...
- Effective Java 24 Eliminate unchecked warnings
Note Eliminate every unchecked warning that you can. Set<Lark> exaltation = new HashSet(); The ...
- hdu 4115 Eliminate the Conflict ( 2-sat )
Eliminate the Conflict Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- hdu4115 Eliminate the Conflict
Eliminate the Conflict Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Once you eliminate all the other factors,the only thing remaining must be the truth.
Once you eliminate all the other factors,the only thing remaining must be the truth. 一旦你排除了杂因,剩下的一定是 ...
- HDU 4115 Eliminate the Conflict(2-SAT)(2011 Asia ChengDu Regional Contest)
Problem Description Conflicts are everywhere in the world, from the young to the elderly, from famil ...
- 把配置和环境解耦 eliminate “works on my machine” problems when collaborating on code with co-workers docker架构与解决的问题
Docker实践 - 懒人的技术笔记 - 博客频道 - CSDN.NET http://blog.csdn.net/lincyang/article/details/43055061 Docker直 ...
- HDU 4115 Eliminate the Conflict(2-sat)
HDU 4115 Eliminate the Conflict pid=4115">题目链接 题意:Alice和Bob这对狗男女在玩剪刀石头布.已知Bob每轮要出什么,然后Bob给Al ...
随机推荐
- NOI 2016 Day1 题解
今天写了NOI2016Day1的题,来写一发题解. T2 网格 题目传送门 Description \(T\) 次询问,每次给出一个 \(n\times m\) 的传送门,上面有 \(c\) 个位置是 ...
- 题解 [NOI2019]弹跳
题目传送门 题目大意 给出 \(n\) 做城市,每座城市都有横纵坐标 \(x,y\).现在给出 \(m\) 个限制 \(p,t,l,r,d,u\),表示从 \(p\) 城市出发,可以花费 \(t\) ...
- mysql update语句的执行流程是怎样的
update更新语句流程是怎么样的 update更新语句基本流程也会查询select流程一样,都会走一遍. update涉及更新数据,会对行加dml写锁,这个DML读锁是互斥的.其他dml写锁需要等待 ...
- Hash窃取与传递
Hash窃取与传递 NTHASH(NTLM) 在 Windows中, 存储的密码Hash就叫做 NTHash,也叫做 NTLM,其中NTLM 全称是 "NT LAN Manager" ...
- Golang通脉之流程控制
流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的"经脉". Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码. ...
- 【UE4 设计模式】观察者模式 Observer Pattern
概述 描述 定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新.观察者模式又叫做 发布-订阅(Publish/Subscribe)模式 模型-视图(M ...
- Android构建工具--AAPT2源码解析(一)
一.什么是AAPT2 在Android开发过程中,我们通过Gradle命令,启动一个构建任务,最终会生成构建产物"APK"文件.常规APK的构建流程如下: (引用自Google官方 ...
- HTML中的emment
emment的优点和使用方法: 优点:Emment是前端开发者必备的工具,使用它可以大大提高前端开发效率. 使用方法:Emment的使用方法非常简单,直接在编辑器上输入HTML和CSS代码的缩写,然后 ...
- 如何清理history
工作中,需要清理history 清理当前会话历史命令 history -c 清理当前用户所有历史命令 echo > .bash_history #在用户主目录执行此操作
- 密码学基础:AES加密算法
[原创]密码学基础:AES加密算法-密码应用-看雪论坛-安全社区|安全招聘|bbs.pediy.com 目录 基础部分概述: 第一节:AES算法简介 第二节:AES算法相关数学知识 素域简介 扩展域简 ...