zoukankan      html  css  js  c++  java
  • luoguP3822 [NOI2017]整数

    #include<set>
    #include<iostream>
    using namespace std;
    typedef unsigned int ui;
    const int N=9999999;
    int n,t1,t2,t3,tp,a,b,k;
    ui zh[N],fu[N];
    set<int> ss;
    inline void add(int cnt,int pos,int val)
    {
        if(val>0)
        {
        	ui ji=(val>>(31-pos)),pre=zh[cnt];
            ji>>=1;zh[cnt]+=(val<<pos);ji+=(pre>zh[cnt]);
        	if(zh[cnt]!=fu[cnt])ss.insert(cnt);
        	else if(ss.find(cnt)!=ss.end())ss.erase(cnt);
            cnt++;
        	while(ji)
        	{
        		pre=zh[cnt];zh[cnt]+=ji;ji=(pre>zh[cnt]);
        		if(zh[cnt]!=fu[cnt])ss.insert(cnt);
        		else if(ss.find(cnt)!=ss.end())ss.erase(cnt);
        		cnt++;
            }
        }
        else if(val<0)
        {
            val=-val;
            ui ji=(val>>(31-pos)),pre=fu[cnt];
            ji>>=1;fu[cnt]+=(val<<pos);ji+=(pre>fu[cnt]);
        	if(zh[cnt]!=fu[cnt])ss.insert(cnt);
        	else if(ss.find(cnt)!=ss.end())ss.erase(cnt);
            cnt++;
        	while(ji)
        	{
        		pre=fu[cnt];fu[cnt]+=ji;ji=(pre>fu[cnt]);
        		if(zh[cnt]!=fu[cnt])ss.insert(cnt);
        		else if(ss.find(cnt)!=ss.end())ss.erase(cnt);
        		cnt++;
            }
        }
    }
    inline int query(int cnt,int pos)
    {
        int v1=(zh[cnt]%(1<<pos)),v2=(fu[cnt]%(1<<pos)),ans=((zh[cnt]>>pos)^(fu[cnt]>>pos))&1;
        if(v1<v2)return (ans^1);
        if(v1>v2 or ss.empty() or cnt<=*(ss.begin())){return ans;}
        set<int>::iterator it=ss.lower_bound(cnt);	--it;
        if(zh[*it]>fu[*it])return ans;
        return (ans^1);
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin>>n>>t1>>t2>>t3;
        while(n--)
        {
            cin>>tp;
            switch(tp)
            {
                case 1:{cin>>a>>b;add(b>>5,b-((b>>5)<<5),a);break;}
                default:{cin>>k;cout<<query(k>>5,k-((k>>5)<<5))<<endl;break;}
            }
        }
    }
    
  • 相关阅读:
    不相交集合ADT
    Python基于比较的排序
    优先队列(堆)
    Python数据结构——散列表
    设计包含min函数的栈
    What really happens when you navigate to a URL
    browser process request
    Business vs Technology
    理解端口与IP
    Tor的教程
  • 原文地址:https://www.cnblogs.com/Ace-MYX/p/10364122.html
Copyright © 2011-2022 走看看