zoukankan      html  css  js  c++  java
  • P3558 [POI2013]BAJ-Bytecomputer

    Jennie

    经过一番思考,我们可以意识到最后数列里肯定只会有(0,1,-1),这样我们就对此进行dp

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    template<class T>
    void read(T &now){
    	now=0;
    	char c=getchar();
    	int f=1;
    	while((!isdigit(c))){
    		if(c=='-') f=-1;
    	//	cout<<isdigit(c)<<" "<<c<<" ";
    		c=getchar();
    	}
    	while(isdigit(c)){
    		now=(now<<1)+(now<<3)+c-'0';
    		c=getchar();
    	}
    	now*=f;
    }
    int tr[24000101];
    int f[5050005];
    int n;
    struct se{
    	int l;
    	int r;
    	friend bool operator <(se x,se y){
    		return x.r==y.r?x.l<y.l:x.r<y.r;
    	}
    }sec[5000005];
    void pushup(int ro){
    	tr[ro]=max(tr[ro<<1],tr[ro<<1|1]);
    }
    void add(int ro,int l,int r,int L,int R,int k){
    	if(L<=l&&r<=R){
    		tr[ro]=k;
    		return ;
    	}
    	int mid=(l+r)>>1;
    	if(L<=mid) add(ro<<1,l,mid,L,R,k);
    	if(R>mid) add(ro<<1|1,mid+1,r,L,R,k);
    	pushup(ro); 
    }
    int que(int ro,int l,int r,int L,int R){
    	if(L<=l&&r<=R){
    		return tr[ro];
    	}
    	int mid=(l+r)>>1;
    	int ans=0;
    	if(L<=mid)  ans=max(que(ro<<1,l,mid,L,R),ans);
    	if(R>mid) ans=max(que(ro<<1|1,mid+1,r,L,R),ans);
    	return ans;
    }
    int rr;
    int main(){
    	read(n);
    	for(int i=1;i<=n;++i){
    		read(sec[i].l);read(sec[i].r);
    		sec[i].l+=2;
    		sec[i].r+=2;
    		rr=max(sec[i].r,rr);
    	}
    	sort(sec+1,sec+1+n);
    	for(int i=1;i<=n;++i){
    		f[sec[i].r]=max(que(1,1,rr,1,sec[i].l-1)+sec[i].r-sec[i].l+1,que(1,1,rr,sec[i].l,sec[i].r));
    		//cout<<que(1,1,rr,sec[i].l,sec[i].r)<<" ";
    	//	cout<<f[sec[i].r]<<endl;
    		add(1,1,rr,sec[i].r,sec[i].r,f[sec[i].r]);
    	}
    	cout<<f[sec[n].r];
    	return 0;
    }
    
    
  • 相关阅读:
    一个分页的存储过程
    自己动手:修改crx文件制作自己的Chrome Apps
    SQLSERVER 过滤所有权的代码
    在ASP.NET中实现多文件上传
    引用 TimeSpan简介
    xml
    常用的正则表达式小结
    ASP.NET事务处理
    创建可在网页下载安装的ActiveX控件(通过Setup.exe安装)
    ASP.NET验证控件应用实例与详解
  • 原文地址:https://www.cnblogs.com/For-Miku/p/15435709.html
Copyright © 2011-2022 走看看