[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,接 ...
随机推荐
- bug制造者又上线了
上一家公司,领导经常这样表扬一位同事,“你写的bug远比你的功能值钱...” 今天特么的突然觉得我好像也有这样的功能,不知道是上次回家把脑子落家里了还是,前几天淋雨脑子进了水了. 呢么简单一个功能,愣 ...
- 解决mapper绑定异常:nested exception is org.apache.ibatis.binding.BindingException:
原因: 此异常的原因是由于mapper接口编译后在同一个目录下没有找到mapper映射文件而出现的.由于maven工程在默认情况下src/main/java目录下的mapper文件是不发布到targe ...
- MySql的主从复制以及读写分离详解
MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中, ...
- Java 递归获取一个路径下的所有文件,文件夹名称
package com.readfile; import java.io.File; public class GetAllFiles { public static void main(String ...
- Android开发网【申明:来源于网络】
Android开发网[申明:来源于网络] 地址:http://www.jizhuomi.com/android/video/
- 2016ACM/ICPC亚洲区沈阳站 - A/B/C/E/G/H/I - (Undone)
链接:传送门 A - Thickest Burger - [签到水题] ACM ICPC is launching a thick burger. The thickness (or the heig ...
- Django组件——分页器和中间件
分页器 Django内置分页器(paginator) 分页器函数为paginator,里面有几个重要的参数需要我们了解 paginator = Paginator(book_list, 10) #第二 ...
- 流控制、FlowControl
这个选项基本上所有网卡都会有,但是叫法会有些差别,比如Realtek网卡叫做流控制,Intel网卡叫做流程控制,还有一些网卡选项干脆是英文的,叫做FlowControl,很多交换机上也有这个功能,也叫 ...
- python基础(3)-pycharm安装&for循环&format字符串&list列表&set集合使用
安装IDE(PyCharm)&破解 点击下载安装包,安装. 点击下载破解补丁. 进入pycharm安装bin目录,将破解补丁copy到当前目录. 在bin目录下找到pycharm.exe.vm ...
- 160A
#include <stdio.h> int main() { int n; int sum1=0, sum2=0, sum3=0; int x, y, z; scanf("%d ...