zoukankan      html  css  js  c++  java
  • [BZOJ4553][TJOI2016&HEOI2016]序列

    bzoj
    luogu

    sol

    每次至多只有一个位置发生变化啊
    考虑设第(i)个数是(a_i),其可以被修改成的值最小是(L_i),最大是(R_i)。初始默认(L_i=R_i=a_i)
    考虑如果有两个位置(i,j)要相邻(假设(j)(i)的前面),那就必须满足(a_jle L_i)(R_jle a_i)。(应该不难理解吧)
    那么就可以直接上(dp)了呀。
    (dp)复杂度是(O(n^2)),由于需要满足两个限制条件,看上去很像二维平面内求区域点权最大值的样子。所以上树套树。

    code

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int gi()
    {
    	int x=0,w=1;char ch=getchar();
    	while ((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
    	if (ch=='-') w=0,ch=getchar();
    	while (ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
    	return w?x:-x;
    }
    const int N = 1e5+5;
    struct segment_tree{int ls,rs,v;}t[N*100];
    int n,m,a[N],L[N],R[N],rt[N],tot,ans;
    void modify(int &x,int l,int r,int p,int v)
    {
    	if (!x) x=++tot;t[x].v=max(t[x].v,v);
    	if (l==r) return;int mid=l+r>>1;
    	if (p<=mid) modify(t[x].ls,l,mid,p,v);
    	else modify(t[x].rs,mid+1,r,p,v);
    }
    int query(int x,int l,int r,int ql,int qr)
    {
    	if (!x||l>=ql&&r<=qr) return t[x].v;
    	int mid=l+r>>1;
    	if (qr<=mid) return query(t[x].ls,l,mid,ql,qr);
    	if (ql>mid) return query(t[x].rs,mid+1,r,ql,qr);
    	return max(query(t[x].ls,l,mid,ql,qr),query(t[x].rs,mid+1,r,ql,qr));
    }
    int main()
    {
    	n=gi();m=gi();
    	for (int i=1;i<=n;++i) L[i]=R[i]=a[i]=gi();
    	for (int i=1;i<=m;++i)
    	{
    		int x=gi(),y=gi();
    		L[x]=min(L[x],y);R[x]=max(R[x],y);
    	}
    	for (int i=1;i<=n;++i)
    	{
    		int res=0;
    		for (int j=L[i];j;j-=j&-j)
    			res=max(res,query(rt[j],1,100000,1,a[i]));
    		++res;ans=max(ans,res);
    		for (int j=a[i];j<=100000;j+=j&-j)
    			modify(rt[j],1,100000,R[i],res);
    	}
    	printf("%d
    ",ans);return 0;
    }
    
  • 相关阅读:
    一些你可能用到的代码
    iOS 键盘下去的方法
    iOS设计模式汇总
    随笔
    Spring cloud config 分布式配置中心 (三) 总结
    Spring cloud config 分布式配置中心(二) 客户端
    Spring cloud config 分布式配置中心(一) 服务端
    jdbcUrl is required with driverClassName spring boot 2.0版本
    JpaRepository接口找不到 spring boot 项目
    解决IntelliJ “Initialization failed for 'https://start.spring.io'
  • 原文地址:https://www.cnblogs.com/zhoushuyu/p/8567775.html
Copyright © 2011-2022 走看看