Description

一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低。”问最少有几个人没有说真话(可能有相同的分数)

Input

第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai、bi

Output

一个整数,表示最少有几个人说谎

Sample Input

3
2 0
0 2
2 2

Sample Output

1

HINT

100%的数据满足: 1≤n≤100000   0≤ai、bi≤n

首先我们考虑一下,撒谎的人去哪了

然后经过周密的推理分析,可以发现,他们爱去哪去哪跟我们半毛钱关系没有

所以我们直接不管他,一开始把不符合条件的直接判掉

然后对于一个人暂时符合条件的人,可以发现它跟其他人的人物关系可以表示成这样

红色表示和我一样的,黄色表示比我弱的,蓝色表示比我强的

可以发现“和我一样的”这个区间一定是不交的

然后我们就相当于要找一些不交的区间使个组最多

用线段树维护一下即可

代码:

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#define ls node<<1
#define rs node<<1|1
#define M 100010
using namespace std;
map<int,int>MP[M];
int n,cnt,ans;
int f[M],val[M<<];
struct point{int l,r,v;}a[M];
bool cmp(point a1,point a2) {
return a1.l<a2.l||(a1.l==a2.l&&a1.r<a2.r);
}
void insert(int node,int l,int r,int p,int v) {
val[node]=max(val[node],v);
if(l==r) return;
int mid=(l+r)/;
if(p<=mid) insert(ls,l,mid,p,v);
else insert(rs,mid+,r,p,v);
}
int query(int node,int l,int r,int l1,int r1) {
if(l1<=l&&r1>=r) return val[node];
int mid=(l+r)/,ans=;
if(l1<=mid) ans=max(ans,query(ls,l,mid,l1,r1));
if(r1>mid) ans=max(ans,query(rs,mid+,r,l1,r1));
return ans;
}
int main() {
scanf("%d",&n);
for(int i=,l,r;i<=n;i++) {
scanf("%d%d",&l,&r);l=l+,r=n-r;
if(l>r) continue;
if(!MP[l][r]) MP[l][r]=++cnt,f[cnt]++,a[cnt]=(point){l,r,};
else f[MP[l][r]]++;
}
for(int i=;i<=cnt;i++) a[i].v=min(f[i],a[i].r-a[i].l+);
sort(a+,a++cnt,cmp);
for(int i=;i<=cnt;i++) {
int t=;
if(a[i].l>) t=query(,,n,,a[i].l-);
insert(,,n,a[i].r,t+a[i].v);
ans=max(ans,t+a[i].v);
}
printf("%d\n",n-ans);
return ;
}

[BZOJ2298]problem a的更多相关文章

  1. OI动态规划&&优化 简单学习笔记

    持续更新!! DP的难点主要分为两类,一类以状态设计为难点,一类以转移的优化为难点. DP的类型 序列DP [例题]BZOJ2298 problem a 数位DP 常用来统计或者查找一个区间满足条件的 ...

  2. 【BZOJ2298】[HAOI2011]problem a DP

    [BZOJ2298][HAOI2011]problem a Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相 ...

  3. BZOJ2298: [HAOI2011]problem a

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2298 题解:刚开始思考的方向错了...一直在想LIS什么的,又发现不合法的情况不好判断,真是个 ...

  4. BZOJ2298:[HAOI2011]problem a——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=2298 https://www.luogu.org/problemnew/show/P2519 一次 ...

  5. [BZOJ2298] [HAOI2011] problem a (dp)

    Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个 ...

  6. 【BZOJ2298】[HAOI2011]problem a

    题解: 虽然也是个可以过得做法...但又没有挖掘到最简单的做法... 正解是发现这个东西等价于求不相交区间个数 直接按照右端点排序,然后贪心就可以O(n)过了 而我的做法是按照a排序(其实我是在模拟这 ...

  7. BZOJ2298: [HAOI2011]problem a(带权区间覆盖DP)

    Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1747  Solved: 876[Submit][Status][Discuss] Descripti ...

  8. BZOJ2298 [HAOI2011]problem a 【dp】

    题目 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个 ...

  9. 【动态规划】bzoj2298: [HAOI2011]problem a

    建模超级妙…… Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接 ...

随机推荐

  1. 我的WafBypass之道(Misc篇)

    先知技术社区独家发表本文,如需要转载,请先联系先知技术社区授权:未经授权请勿转载.先知技术社区投稿邮箱:Aliyun_xianzhi#service.alibaba.com: Author:Tr3je ...

  2. Node.js的进程管理

    众所周知Node基于V8,而在V8中JavaScript是单线程运行的,这里的单线程不是指Node启动的时候就只有一个线程,而是说运行JavaScript代码是在单线程上,Node还有其他线程,比如进 ...

  3. Mysql 索引迁移策略

    Mysql 索引迁移策略 近日在核查项目中的一些慢sql时发现一个很鸡仔儿的问题,本地开发库表中索引跟生产上差距很大,又因为生产库登录各种麻烦,需要各种验证码,那么多的慢sql分给好些个人,不可能让大 ...

  4. 剑指offer——python【第14题】链表中倒数第k个节点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路 注意,看清楚,是输出节点,而不是输出节点值 可以先求出链表总长度,然后正向遍历得到第n个节点 解答 class Solution: def ...

  5. java中 时间/日期 的使用方法

    import java.util.*;    //引入date需要的包import java.text.SimpleDateFormat;//   引入格式化需要的包import java.util. ...

  6. Gym 101194L / UVALive 7908 - World Cup - [三进制状压暴力枚举][2016 EC-Final Problem L]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

  7. 深入理解Spring AOP之二代理对象生成

    深入理解Spring AOP之二代理对象生成 spring代理对象 上一篇博客中讲到了Spring的一些基本概念和初步讲了实现方法,当中提到了动态代理技术,包含JDK动态代理技术和Cglib动态代理 ...

  8. html5中JavaScript删除全部节点

    如果div里有这么些内容: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type ...

  9. .so相关总结

    1.windows 中查看进程依赖那个dll,使用depends,linux使用ldd命令. 2.查看dll中有哪些导出函数windows使用dumpbin,linux使用objdump查看so中有哪 ...

  10. 【Assembly】-NO.88.Assembly.2.滴水逆向.1.002-【位运算及基础指令】-

    1.0.0 Summary Tittle:[Assembly]-NO.88.Assembly.2.滴水逆向.1.002-[]- Style:Java Series:Log4j Since:2018-0 ...