[HAOI2011]problem a(DP)
来源:互联网 发布:cms影视发布 编辑:程序博客网 时间:2024/04/30 04:47
[HAOI2011]problem a
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
这道题用了所谓的“补集转化”的思想,本意是求最少有几个人没有说真话,但我们可以转化为最多有几个人说了真话,那么状态就出来了,令f[i]表示为前i个人中最多有几个人说了真话。
接下来的状态转移放方程也就很自然了:
f[i]=max{f[j-1]+sum[j][i]} j < i
其中sum[x][y] 表示(x~y)名次中有多少人。
关键是怎么实现这个状态转移方程,map有一个很好的东西,可以用一个pair(x,y)把 l,r 这段区间存放起来
(注:a+1 ~ n-b)
剩下的就好办了,细节问题参考下面代码。
Code:
#include<stdio.h>#include<string.h>#include<map>#include<vector>#define MAXN 100005using namespace std;int n,a,b,l,r;int f[MAXN];vector<int>q[MAXN];map<pair<int,int>,int>s;int max(int a,int b){return a>b?a:b;}int min(int a,int b){return a<b?a:b;}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d",&a,&b); l=a+1,r=n-b; if(l>r) continue; s[make_pair(l,r)]++; if(s[make_pair(l,r)]==1) q[r].push_back(l); } for(int i=1;i<=n;i++) { f[i]=f[i-1]; for(int j=0;j<q[i].size();j++) { f[i]=max(f[i],f[q[i][j]-1]+min(i-q[i][j]+1,s[make_pair(q[i][j],i)])); } } printf("%d\n",n-f[n]); return 0;}
0 0
- [HAOI2011]problem a(DP)
- [BZOJ2298][HAOI2011]problem a(DP)
- bzoj2298: [HAOI2011]problem a dp
- 【bzoj2298】【HAOI2011】【problem a】【dp】
- BZOJ 2298 [HAOI2011]problem a DP
- 【bzoj 2298】[HAOI2011]problem a dp
- bzoj 2302: [HAOI2011]Problem c(DP)
- [bzoj2298][HAOI2011]problem a
- [BZOJ2298] [HAOI2011]problem a
- BZOJ2298: [HAOI2011]problem a
- 2298: [HAOI2011]problem a
- BZOJ2298: [HAOI2011]problem a
- BZOJ2298 [HAOI2011]problem a
- 2298: [HAOI2011]problem a
- 【BZOJ】【P2298】【HAOI2011】【problem a】【题解】【dp+二分】
- 【bzoj2302】【HAOI2011】【problem c】【dp】
- bzoj 2298: [HAOI2011]problem a
- BZOJ 2298 [HAOI2011]problem a
- DirectX11 混合状态
- ACM-字符串-字典树
- c++函数初探
- (七十九)MapKit的基本使用
- Java基础语法(三)(流程控制和数组)
- [HAOI2011]problem a(DP)
- vim正常模式、插入模式、命令模式切换
- Ubuntu下mysql设置远程访问
- 每天一个小知识点9(jQuer总结三)
- JAVA-开发环境搭建
- 新的开始
- Linux日志文件总管logrotate
- 权当开篇——Linux学习之路(一)
- java.util.ConcurrentModificationException 解决办法