传送门

考虑转化为求最多说真话的人数

设$f(i)$表示排名前$i$的人中最多说真话的人的数量,考虑转移,如果由$j$转移而来,可以设$[j,i]$之间的人全都分数相等,那么式子就是$f[i]=f[j-1]+sum([j,i])$,其中$sum([j,i])$表示处在这个区间的人数,全部分数相等,另外如果人数多于区间数,多出来的人都在说谎

 //minamoto
#include<bits/stdc++.h>
#define mp(i,j) make_pair(i,j)
using namespace std;
#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[<<],*p1=buf,*p2=buf;
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,:;}
inline int read(){
#define num ch-'0'
char ch;bool flag=;int res;
while(!isdigit(ch=getc()))
(ch=='-')&&(flag=true);
for(res=num;isdigit(ch=getc());res=res*+num);
(flag)&&(res=-res);
#undef num
return res;
}
const int N=;
vector<int> a[N];int n,f[N];map<pair<int,int>,int> x;
vector<int>::iterator ii;
int main(){
// freopen("testdata.in","r",stdin);
n=read();
for(int i=;i<=n;++i){
int l=read(),r=read();
++l,r=n-r;
if(l>r) continue;
if(++x[mp(l,r)]==) a[r].push_back(l);
}
for(int i=;i<=n;++i){
f[i]=f[i-];
for(ii=a[i].begin();ii!=a[i].end();++ii)
cmax(f[i],f[(*ii)-]+min(i-(*ii)+,x[mp(*ii,i)]));
}
printf("%d\n",n-f[n]);
return ;
}

最新文章

  1. 去掉input框点击时的默认颜色
  2. [IIS]IIS扫盲(二)
  3. .NET(Core)应用程序模型及未来
  4. mysql指定某行或者某列的排序
  5. [整理]Selector、shape详解
  6. jQuery插件之artDialog
  7. B - 最大报销额
  8. 大数据系列之Flume+HDFS
  9. 今天给大家分享一下PS快捷键大全
  10. Java第十一周学习总结
  11. use ambiguous的错误——编译错误
  12. vue---mixins的用法
  13. Selenium自动化Chrome浏览器 在windows下窗口最大化
  14. 阅读:ECMAScript 6 入门(3)
  15. html页面调用js文件里的函数报错--&gt;方法名 is not defined处理方法
  16. 如何做自己的服务监控?spring boot 1.x服务监控揭秘
  17. 使用jenkins pipeline,并发selenium测试 --- 你值得了解
  18. 在dbgrideh中允许选择多行,如何知道哪些行被选中
  19. Kinect2.0获取数据
  20. elasticsearch更改mapping,不停服务重建索引(转)

热门文章

  1. ALERT日志中常见监听相关报错之三:ORA-609 TNS-12537 and TNS-12547 or TNS-12170 TNS-12535错误的排查
  2. 如何快速上手一款新的嵌入式CPU芯片(记录CC2540开发经历)
  3. C++ string string string string string string string string string string
  4. Linux下mount FreeBSD分区
  5. JAVA WEB学习笔记(一):JDK的安装及环境变量的配置
  6. spring中Bean创建
  7. Robotium结果的收集和失败重跑
  8. (转)CSS3全局实现所有元素的内边距和边框不增加
  9. Cluster Mode Overview
  10. MySQL的简单优化