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

题解:首先,由每个人说的话的内容,我们可以理解为他处在ai+1,n-bi这个区间(分数段)内,且这个区间每个人的分数相等;

有n个这样的区间,可以看出,交叉的区间不能一起选,完全相同的区间可以一起选;

这样我们把相同的区间数目求出来作为这个区间的权值,这个问题就成了带权的选择权值之和最大的不相交的区间问题;

利用动态规划解决即可;

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<ctime>
#include<algorithm>
#include<cstdlib>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<cmath>
using namespace std;
#define FILE "a"
#define LL long long
#define up(i,j,n) for(int i=j;i<=n;i++)
#define pii pair<int,int>
#define piii pair<int,pii >
template<typename T> inline bool chkmin(T &a,T b){return a>b?a=b,true:false;}
template<typename T> inline bool chkmax(T &a,T b){return a<b?a=b,true:false;}
namespace IO{
char *fs,*ft,buf[<<];
inline char gc(){return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;}
inline int read(){
LL x=;int ch=gc();bool f=;
while(ch<''||ch>''){if(ch=='-')f=;ch=gc();}
while(ch<=''&&ch>=''){x=(x<<)+(x<<)+ch-'';ch=gc();}
return f?-x:x;
}
}using namespace IO;
namespace OI{
const int maxn();
struct node{
int x,y;
bool operator<(const node &b)const{return x<b.x||(x==b.x&&y<b.y);}
bool operator==(const node &b){return x==b.x&&y==b.y;}
}a[maxn];
int n,f[maxn];
struct Node{
int y,v,next;
}e[maxn];
int linkk[maxn],len=;
void insert(int x,int y,int v){
e[++len].y=y;
e[len].next=linkk[x];
linkk[x]=len;
e[len].v=v;
}
void slove(){
n=read();
up(i,,n)a[i].x=read()+,a[i].y=n-read();
sort(a+,a+n+);
up(i,,n){
int j=i,v;
while(a[j+]==a[i])j++;
v=j-i+;
if(a[i].y-a[i].x+<v)v=a[i].y-a[i].x+;
insert(a[i].x,a[i].y,v);
i=j;
}
up(i,,n){
chkmax(f[i],f[i-]);
for(int j=linkk[i];j;j=e[j].next)chkmax(f[e[j].y],f[i-]+e[j].v);
}
printf("%d\n",n-f[n]);
}
}
int main(){
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
using namespace OI;
slove();
return ;
}

最新文章

  1. Objective-c快速入门
  2. 【20160722-20160728】NOI2016滚粗记&amp;&amp;酱油记&amp;&amp;游记
  3. PAT (Advanced Level) Practise:1001. A+B Format
  4. springMVC配置步骤
  5. MariaDB链接超时优化
  6. Google 网络库Volley简介
  7. Linux 伙伴算法简介
  8. Android ImageButton的背景(图片)大小
  9. sql求和涉及到null值
  10. DINOR闪存知识
  11. Android Studio 中提示 Private field &#39;mType&#39; is assigned but never accessed 的原因
  12. [题解]SP703 SERVICE - Mobile Service_Done
  13. python 环境安装和卸载1
  14. Win10下创建Python3.7创建虚拟环境以及安装Flask框架
  15. mysql获取随机字符串和随机数的方法
  16. django ---Auth模块
  17. 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist
  18. 从ibd文件获取表空间id
  19. android 实现mqtt消息推送,以及不停断线重连的问题解决
  20. Bootstrap 按钮下拉菜单

热门文章

  1. jquery鼠标点击窗口或浮动层以外关闭层【阻止冒泡事件】
  2. Software Engineering | Factory method pattern
  3. Codeforces Gym - 101147G The Galactic Olympics
  4. 为什么BT网络中迅雷的速度会这么快,比其它BT软件快
  5. Android 音频的播放之二MediaPlayer
  6. 使用squid快速搭建代理
  7. C++入门一
  8. FALSE_IT
  9. mysql启动warning: World-writable config file
  10. linux 查找最后几条数据