[BZOJ2298]problem a
Description
Input
第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai、bi
Output
一个整数,表示最少有几个人说谎
Sample Input
2 0
0 2
2 2
Sample Output
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的更多相关文章
- OI动态规划&&优化 简单学习笔记
持续更新!! DP的难点主要分为两类,一类以状态设计为难点,一类以转移的优化为难点. DP的类型 序列DP [例题]BZOJ2298 problem a 数位DP 常用来统计或者查找一个区间满足条件的 ...
- 【BZOJ2298】[HAOI2011]problem a DP
[BZOJ2298][HAOI2011]problem a Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相 ...
- BZOJ2298: [HAOI2011]problem a
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2298 题解:刚开始思考的方向错了...一直在想LIS什么的,又发现不合法的情况不好判断,真是个 ...
- BZOJ2298:[HAOI2011]problem a——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=2298 https://www.luogu.org/problemnew/show/P2519 一次 ...
- [BZOJ2298] [HAOI2011] problem a (dp)
Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个 ...
- 【BZOJ2298】[HAOI2011]problem a
题解: 虽然也是个可以过得做法...但又没有挖掘到最简单的做法... 正解是发现这个东西等价于求不相交区间个数 直接按照右端点排序,然后贪心就可以O(n)过了 而我的做法是按照a排序(其实我是在模拟这 ...
- BZOJ2298: [HAOI2011]problem a(带权区间覆盖DP)
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1747 Solved: 876[Submit][Status][Discuss] Descripti ...
- BZOJ2298 [HAOI2011]problem a 【dp】
题目 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个 ...
- 【动态规划】bzoj2298: [HAOI2011]problem a
建模超级妙…… Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接 ...
随机推荐
- 我的WafBypass之道(Misc篇)
先知技术社区独家发表本文,如需要转载,请先联系先知技术社区授权:未经授权请勿转载.先知技术社区投稿邮箱:Aliyun_xianzhi#service.alibaba.com: Author:Tr3je ...
- Node.js的进程管理
众所周知Node基于V8,而在V8中JavaScript是单线程运行的,这里的单线程不是指Node启动的时候就只有一个线程,而是说运行JavaScript代码是在单线程上,Node还有其他线程,比如进 ...
- Mysql 索引迁移策略
Mysql 索引迁移策略 近日在核查项目中的一些慢sql时发现一个很鸡仔儿的问题,本地开发库表中索引跟生产上差距很大,又因为生产库登录各种麻烦,需要各种验证码,那么多的慢sql分给好些个人,不可能让大 ...
- 剑指offer——python【第14题】链表中倒数第k个节点
题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路 注意,看清楚,是输出节点,而不是输出节点值 可以先求出链表总长度,然后正向遍历得到第n个节点 解答 class Solution: def ...
- java中 时间/日期 的使用方法
import java.util.*; //引入date需要的包import java.text.SimpleDateFormat;// 引入格式化需要的包import java.util. ...
- 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 ...
- 深入理解Spring AOP之二代理对象生成
深入理解Spring AOP之二代理对象生成 spring代理对象 上一篇博客中讲到了Spring的一些基本概念和初步讲了实现方法,当中提到了动态代理技术,包含JDK动态代理技术和Cglib动态代理 ...
- html5中JavaScript删除全部节点
如果div里有这么些内容: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type ...
- .so相关总结
1.windows 中查看进程依赖那个dll,使用depends,linux使用ldd命令. 2.查看dll中有哪些导出函数windows使用dumpbin,linux使用objdump查看so中有哪 ...
- 【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 ...