zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    linux 查看硬盘使用情况
    linux 用户操作命令
    Win10系列:C#应用控件进阶2
    Win10系列:C#应用控件进阶3
    Win10系列:C#应用控件进阶1
    Win10系列:C#应用控件基础23
    Win10系列:C#应用控件基础20
    Win10系列:C#应用控件基础21
    Win10系列:C#应用控件基础19
    Win10系列:C#应用控件基础17
  • 原文地址:https://www.cnblogs.com/bztMinamoto/p/10042436.html
Copyright © 2011-2022 走看看