P3822 [NOI2017]整数
shadowice大佬已经写的非常详细了我就不再写一遍了……
//minamoto
#include<bits/stdc++.h>
#define u unsigned int
#define fp(i,a,b) for(register int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(register int i=a,I=b-1;i>I;--i)
using namespace std;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
int read(){
    int res,f=1;char ch;
    while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);
    for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');
    return res*f;
}
const int N=1e6+5;
u inc[N],ded[N],st,add,las,v1,v2;int n,x,p,q,a,b,ans;set<int>s;set<int>::iterator it;
int main(){
//	freopen("testdata.in","r",stdin);
	n=read(),read(),read(),read();
	while(n--){
		x=read();
		if(x==1){
			a=read(),b=read(),p=b/32,q=b%32;
			if(a>0){
				st=(u)a<<q,add=(u)a>>(31-q),add>>=1;
				las=inc[p],inc[p]+=st;add+=(las>inc[p]);
				if(inc[p]!=ded[p])s.insert(p);else if(s.count(p))s.erase(p);
				while(add){
					++p,las=inc[p],inc[p]+=add,add=(las>inc[p]);
					if(inc[p]!=ded[p])s.insert(p);else if(s.count(p))s.erase(p);
				}
			}else{
				a=-a,st=(u)a<<q,add=(u)a>>(31-q),add>>=1;
				las=ded[p],ded[p]+=st;add+=(las>ded[p]);
				if(inc[p]!=ded[p])s.insert(p);else if(s.count(p))s.erase(p);
				while(add){
					++p,las=ded[p],ded[p]+=add,add=(las>ded[p]);
					if(inc[p]!=ded[p])s.insert(p);else if(s.count(p))s.erase(p);
				}
			}
		}else{
			b=read();p=b/32,q=b%32,ans=((inc[p]>>q)^(ded[p]>>q))&1;
			v1=inc[p]%(1<<q),v2=ded[p]%(1<<q);
			if(v1<v2)ans^=1;
			else if(v1==v2&&!s.empty()&&p>(*s.begin())){
				it=s.lower_bound(p);--it;
				if(inc[*it]<ded[*it])ans^=1;
			}puts(ans?"1":"0");
		}
	}return 0;
}
												
											P3822 [NOI2017]整数的更多相关文章
- [bzoj4942] [洛谷P3822] [NOI2017] 整数
		
题目链接 https://www.luogu.org/problemnew/show/P3822 想法 这个啊,就是线段树哇 最初的想法是每位一个节点,然后进位.退位找这一位前面第一个0或第一个1,然 ...
 - [NOI2017]整数
		
[NOI2017]整数 题目大意: \(n(n\le10^6)\)次操作维护一个长度为\(30n\)的二进制整数\(x\),支持以下两种操作: 将这个整数加上\(a\cdot2^b(|a|\le10^ ...
 - 【BZOJ4942】[Noi2017]整数 线段树+DFS(卡过)
		
[BZOJ4942][Noi2017]整数 题目描述去uoj 题解:如果只有加法,那么直接暴力即可...(因为1的数量最多nlogn个) 先考虑加法,比较显然的做法就是将A二进制分解成log位,然后依 ...
 - [Bzoj4942][Noi2017]整数(线段树)
		
4942: [Noi2017]整数 Time Limit: 50 Sec Memory Limit: 512 MBSubmit: 363 Solved: 237[Submit][Status][D ...
 - NOI2017整数
		
NOI2017 整数 题意:  让你实现两个操作: 1 \(a\) \(b\):将\(x\)加上整数\(a \cdot 2 ^ b\),其中 \(a\)为一个整数,\(b\)为一个非负整数 2 \( ...
 - 【BZOJ4942】[NOI2017]整数(分块)
		
[BZOJ4942][NOI2017]整数(分块) 题面 BZOJ 洛谷 题解 暴力就是真正的暴力,直接手动模拟进位就好了. 此时复杂度是模拟的复杂度加上单次询问的\(O(1)\). 所以我们需要优化 ...
 - 【bzoj4942】[Noi2017]整数  压位+线段树
		
题目描述 P 博士将他的计算任务抽象为对一个整数的操作. 具体来说,有一个整数 $x$ ,一开始为0. 接下来有 $n$ 个操作,每个操作都是以下两种类型中的一种: 1 a b :将 $x$ 加上整数 ...
 - [BZOJ4942] [NOI2017]整数
		
题目背景 在人类智慧的山巅,有着一台字长为1048576位(此数字与解题无关)的超级计算机,著名理论计算机科 学家P博士正用它进行各种研究.不幸的是,这天台风切断了电力系统,超级计算机 无法工作,而 ...
 - BZOJ4942 & UOJ314:[NOI2017]整数——题解
		
https://www.lydsy.com/JudgeOnline/problem.php?id=4942 http://uoj.ac/problem/314 https://www.luogu.or ...
 
随机推荐
- 使用idea搭建ssh项目
			
参考: https://www.cnblogs.com/getchen/p/8036709.html 需要自己提前在数据库中建好表 然后连接数据库通过侧边栏的persistence来生成实体类和相应的 ...
 - 在linux服务器上搭建Struts2项目运行环境
			
服务器上工作: 首先要先装java https://www.cnblogs.com/lamp01/p/8932740.html 然后装好tomcat https://www.cnblogs.com/y ...
 - HDU-1083Courses,二分图模板题!
			
Courses ...
 - Automation 的 ReportFlow
			
ReportFlow: // click the Grid icon and switch to grid page public void changeToGrid() // click the A ...
 - MTK平台添加防止误触代码
			
ltr559_old: #include <linux/interrupt.h> #include <linux/i2c.h> #include <linux/slab. ...
 - idea导入(import)项目和打开(open)项目的区别
			
前言: 每次接手老项目,都得从git或svn下载下来,但是如果之前的项目不是用idea写的怎么办,可是你又习惯啦idea,那你必须把项目在idea上跑起来,那是用import还是用open呢,如何抉择 ...
 - 【ZJOI2017 Round1游记】
			
DAY0: 中午12点出发,下午5点到 酒店意外豪华 晚上和MG,LYY们定了个寿司套餐 没什么学习就睡觉了 DAY1: 听说RYZ在ZJ的OIer中影响颇深 讲STL的小哥真是对不住因为我是P党 D ...
 - Java度线程——生产消费问题
			
/*JDK1.4版本:生产者,消费者.多生产者,多消费者的问题.if判断标记,只有一次,会导致不该运行的线程运行了.出现了数据错误的情况.while判断标记,解决了线程获取执行权后,是否要运行! no ...
 - Ubuntu 16.04安装Ubuntu After Install工具实现常用软件批量安装
			
这个软件集成了常用且好用的软件,且只需要选择需要的软件之后自动安装好,不需要额外设置. 安装: sudo add-apt-repository ppa:thefanclub/ubuntu-after- ...
 - JDBC的Statement对象
			
以下内容引用自http://wiki.jikexueyuan.com/project/jdbc/statements.html: 一旦获得了数据库的连接,就可以和数据库进行交互.JDBC的Statem ...