又看题解了,这样下去要跪啊QAQ

原题:

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

1≤n≤100000   0≤ai、bi≤n

想不出来做法,就去看题解了

首先这个题意很有问题,"有ai个人分数比我高"是严格的,有人这么说说明他的排名区间在l=bi+1到r=n-ai之间,且l到r这个区间中所有人的成绩都是一样的

然后有个问题就是如果供词区间在l到r中的人不够r-l+1怎么办?根据鸽巢原理应该可以证明,这样的情况一定会有人说谎,说谎的人填补整下的即可

那么完全相同的区间就可以合并,权值为供词为这个区间的人数,然后求一个线段中不相交的区间覆盖

因为n很大,所以可以用邻接表,先以r第一优先级l第二优先级排序,然后按排好的序扫一下边,如果l[i]和l[i+1],r[i]和r[i+1]完全相同就不加入链表中,给上一个加入的边权值++,否则链表中插入一条权值为1的边

(其实有更好的实现方式,这个不难想(不是用map= =

最后dp,f[r]=max{f[l-1]+e[i].v} <- 区间覆盖DP

又看题解了,这样下去要跪啊QAQ

代码:

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int rd(){int z=,mk=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')mk=-; ch=getchar();}
while(ch>=''&&ch<=''){z=(z<<)+(z<<)+ch-''; ch=getchar();}
return z*mk;
}
struct dcd{int x,y;}a[];
struct ddd{int nxt,y,v;}e[]; int lk[],ltp=;
inline void ist(int x,int y,int z){ e[++ltp].nxt=lk[x],lk[x]=ltp,e[ltp].y=y,e[ltp].v=z;}
int n;
int f[];
bool cmp(dcd x,dcd y){ return (x.y==y.y)?(x.x<y.x):x.y<y.y;}
int main(){//freopen("ddd.in","r",stdin);
cin>>n;
for(int i=;i<=n;++i){
a[i].x=rd()+,a[i].y=n-rd();
//if(a[i].x==a[i].y){ cout<<a[i].x<<endl;}
}
sort(a+,a+n+,cmp);
int bwl;
for(int i=;i<=n;++i){
bwl=;
while(a[i+].x==a[i].x && a[i+].y==a[i].y) ++bwl,++i;
ist(a[i].y,a[i].x-,min(bwl,a[i].y-a[i].x+));
}
for(int i=;i<=n;++i){
f[i]=f[i-];
for(int j=lk[i];j;j=e[j].nxt) f[i]=max(f[i],f[e[j].y]+e[j].v);
}
cout<<n-f[n]<<endl;
return ;
}

最新文章

  1. redis的安装配置
  2. [Hadoop]-从数据去重认识MapReduce
  3. C# 如何用计时器Timer控件实现停留几秒再做切换窗体的操作
  4. Quartz1.8.5例子(四)
  5. Qt之QTemporaryFile(文件名唯一,且可以自动删除)
  6. python 正则的使用 —— 编写一个简易的计算器
  7. TCP的概念
  8. SQL Server 2012安装时报错,错误 0x80070422怎么解决?解决方法。
  9. 备忘:EBS参考链接
  10. 学以致用二十七-----Centos7.5二进制安装mysql5.7.23
  11. node.js 设置脚本命令
  12. 函数式编程的终极形式:面向映射流的编程pipeline
  13. flask路由中增加正则表达式
  14. python编辑选课系统
  15. ceilometer 源码分析(polling)(O版)
  16. MySQL 5.6 GTID Replication【转】
  17. Ubuntu和centos下查看包的安装路径
  18. Docker-Compose API too old for Windows
  19. mysql的三种安装方式(详细)
  20. ChemDraw 15.1 Pro插入阿尔法可以这样做

热门文章

  1. C# 爬虫DLL文件 学习网站
  2. C++基础知识:异常处理
  3. 3.1 C++继承的概念及语法
  4. Zabbix4.0监控URL
  5. web项目与jsp有关的三个jar的依赖
  6. python中的循环以及,continue和break的使用
  7. 51nod1009
  8. 软件工程项目程序:WC
  9. c#dataGridView 知识
  10. Spring学习三