洛谷 P2519 [HAOI2011]problem a
2024-09-06 15:51:02
考虑转化为求最多说真话的人数
设$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 ;
}
最新文章
- 去掉input框点击时的默认颜色
- [IIS]IIS扫盲(二)
- .NET(Core)应用程序模型及未来
- mysql指定某行或者某列的排序
- [整理]Selector、shape详解
- jQuery插件之artDialog
- B - 最大报销额
- 大数据系列之Flume+HDFS
- 今天给大家分享一下PS快捷键大全
- Java第十一周学习总结
- use ambiguous的错误——编译错误
- vue---mixins的用法
- Selenium自动化Chrome浏览器 在windows下窗口最大化
- 阅读:ECMAScript 6 入门(3)
- html页面调用js文件里的函数报错-->;方法名 is not defined处理方法
- 如何做自己的服务监控?spring boot 1.x服务监控揭秘
- 使用jenkins pipeline,并发selenium测试 --- 你值得了解
- 在dbgrideh中允许选择多行,如何知道哪些行被选中
- Kinect2.0获取数据
- elasticsearch更改mapping,不停服务重建索引(转)
热门文章
- ALERT日志中常见监听相关报错之三:ORA-609 TNS-12537 and TNS-12547 or TNS-12170 TNS-12535错误的排查
- 如何快速上手一款新的嵌入式CPU芯片(记录CC2540开发经历)
- C++ string string string string string string string string string string
- Linux下mount FreeBSD分区
- JAVA WEB学习笔记(一):JDK的安装及环境变量的配置
- spring中Bean创建
- Robotium结果的收集和失败重跑
- (转)CSS3全局实现所有元素的内边距和边框不增加
- Cluster Mode Overview
- MySQL的简单优化