[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 ...
随机推荐
- vue 中级基础考察面试题
vue 生命周期有哪些 beforeCreate created beforeMount mounted beforeUpdate updated activated deactivated befo ...
- 从0到1使用Kubernetes系列(二):安装工具介绍
该系列第一篇为:<从0到1使用Kubernetes系列--Kubernetes入门>.本文是Kubernetes系列的第二篇,将介绍使用Kubeadm+Ansible搭建Kubernete ...
- v72.01 鸿蒙内核源码分析(Shell解析) | 应用窥伺内核的窗口 | 百篇博客分析OpenHarmony源码
子曰:"苟正其身矣,于从政乎何有?不能正其身,如正人何?" <论语>:子路篇 百篇博客系列篇.本篇为: v72.xx 鸿蒙内核源码分析(Shell解析篇) | 应用窥视 ...
- Java(23)常用API二
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228415.html 博客主页:https://www.cnblogs.com/testero ...
- 2.3 Core Building Blocks 核心构件
Core Building Blocks 核心构件 DDD mostly focuses on the Domain & Application Layers and ignores the ...
- JBOSS未授权访问漏洞利用
1. 环境搭建 https://www.cnblogs.com/chengNo1/p/14297387.html 搭建好vulhub平台后 进入对应漏洞目录 cd vulhub/jboss/CVE-2 ...
- C# 如何使用代码添加控件及控件事件
1.首先简单设计一下界面: 添加了Click事件 <Window x:Class="WpfApp.MainWindow" xmlns="http://schemas ...
- [技术博客]WEB实现划词右键操作
[技术博客]WEB实现划词右键操作 一.功能解释 简单地对题目中描述的功能进行解释:在浏览器中,通过拖动鼠标选中一个词(或一段文字),右键弹出菜单,且菜单为自定义菜单,而非浏览器本身的菜单.类似的功能 ...
- Vue接收后端传过来excel表格的文件流并下载
题外话:当接收文件流时要确定文件流的类型,但也有例外就是application/octet-stream类型,主要是只用来下载的类型,这个类型简单理解意思就是通用类型类似 var .object.ar ...
- spring、spring boot中配置多数据源
在项目开发的过程中,有时我们有这样的需求,需要去调用别的系统中的数据,那么这个时候系统中就存在多个数据源了,那么我们如何来解决程序在运行的过程中到底是使用的那个数据源呢? 假设我们系统中存在2个数据源 ...