• [HAOI2011]problem a


    [HAOI2011]problem a

    思考一下:转化条件则一个人在 \([a + 1,n - b]\)排名中,且这些人分数都一样。

    那么就是若干个区间选择不交集合的问题。

    // Problem: P2519 [HAOI2011]problem a
    // Contest: Luogu
    // URL: https://www.luogu.com.cn/problem/P2519
    // Memory Limit: 125 MB
    // Time Limit: 1000 ms
    // 
    // Powered by CP Editor (https://cpeditor.org)
    
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #define ll long long
    #define N 1000005
    
    ll n,cnt,tot;
    
    struct seg{
    	ll l,r,v;
    }e[N],p[N];
    
    ll f[N];
    
    bool operator < (seg a,seg b){
    	if(a.r != b.r)
    	return a.r < b.r;
    	else
    	return a.l < b.l;
    }
    
    #define mid ((l + r) >> 1)
    
    inline ll find(int u){
    	ll l = 1,r = u - 1;
    	while(l + 1 < r){
    		if(p[mid].r < p[u].l)
    		l = mid;
    		else
    		r = mid;
    	}
    	while(p[l + 1].r < p[u].l)
    	++l;
    	return l;
    }
    
    int main(){
    	scanf("%lld",&n);
    	for(int i = 1;i <= n;++i){
    		ll l,r;
    		scanf("%lld%lld",&l,&r);
    		ll a = l + 1,b = n - r;
    		if(a <= b && l + r < n)
    		e[++cnt].l = a,e[cnt].r = b;
    	}
    	std::sort(e + 1,e + cnt + 1);
    	ll last = 1;
    	// for(int i = 1;i <= cnt;++i)
    	// std::cout<<e[i].l<<" "<<e[i].r<<std::endl;
    	for(int i = 1;i <= cnt + 1;++i){
    		if(e[last].l != e[i].l || e[last].r != e[i].r)
    		p[++tot].l = e[last].l,p[tot].r = e[last].r,p[tot].v = i - last,last = i;
    	}
    	for(int i = 1;i <= tot;++i)
    	p[tot].v = std::min(p[tot].v,1ll * p[tot].r - p[tot].l + 1);
    	// for(int i = 1;i <= tot;++i)
    	// std::cout<<p[i].l<<" "<<p[i].r<<" "<<p[i].v<<std::endl;
    	// find(2);
    	f[1] = p[1].v;
    	for(int i = 2;i <= tot;++i){
    		ll k = find(i);
    		f[i] = std::max(f[i - 1],f[k] + p[i].v);
    	}
    	std::cout<<n - f[tot]<<std::endl;
    }
    
  • 相关阅读:
    Docker 实战(2)- 在 Jenkins 容器上的搭建持续集成环境和完成自动化测试
    Docker
    Jenkins(9)- 汉化 Jenkins 网站
    Docker 实战(1)- 使用 Jenkins 镜像创建容器,并搭建 Python + Pytest +Allure 的自动化测试环境
    Python
    Docker
    Linux
    Docker(20)- docker rmi 命令详解
    Docker(19)- docker pause/unpause 命令详解
    Docker(18)- docker kill 命令详解
  • 原文地址:https://www.cnblogs.com/dixiao/p/15020200.html
Copyright © 2020-2023  润新知