又看题解了,这样下去要跪啊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 ;
}

【HAOI2011】problem a的更多相关文章

  1. 【BZOJ2301】【HAOI2011】Problem B(莫比乌斯反演)

    [BZOJ2301][HAOI2011]Problem B(莫比乌斯反演) 题面 Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y ...

  2. 清北学堂例题 LUOGU2519 【HAOI2011】PROBLEM A

    题目描述 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个整数,第i+1行 ...

  3. 【BZOJ2301】【HAOI2011】Problem b [莫比乌斯反演]

    Problem b Time Limit: 50 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 对于给出的n个询问,每次 ...

  4. BZOJ 2301 【HAOI2011】 Problem b

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

  5. 【HAOI2011】problem b

    数论好劲啊 原题: 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 1≤n≤50000,1≤a≤b ...

  6. 清北学堂例题 LUOGU2523【HAOI2011】problem c

    题目描述 给n个人安排座位,先给每个人一个1~n的编号,设第i个人的编号为ai(不同人的编号可以相同),接着从第一个人开始,大家依次入座,第i个人来了以后尝试坐到ai,如果ai被占据了,就尝试ai+1 ...

  7. 【题解】【HAOI2011】Problem b

    \(Luogu2522\) 题目大意:求下面式子的值: \[\sum_{i=x}^n\sum_{j=y}^m[\gcd(i,j)=k] \] 这个东西直接求不好求,考虑差分,从\([1,n]\)的范围 ...

  8. 【BZOJ2998】Problem A(动态规划)

    [BZOJ2998]Problem A(动态规划) 题面 BZOJ 题解 一个人的成绩范围可以确定为一个区间 这样就变成了 选择若干区间,不重合, 每个区间有个权值,求最大权值和 这样就可直接\(dp ...

  9. 【HAOI2011】向量

    [题目描述] 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个 ...

随机推荐

  1. CSS技巧-文字分散对齐的方法

    下面的代码可以在IE中实现文字分散对齐: <table width="300" align="center">    <tr>      ...

  2. html、xhtml、html5的区别

    1.HTML:HyperText Mark-up Language(超文本标记语言)构成网页的主要语言  常指:HTML 4.012.XHTLM:EXtensible HyperText Mark-u ...

  3. asp.net mvc 获取ajax的 request payload 参数

    注意事项: 传输的格式要设置城:"contentType": "application/x-www-form-urlencoded"

  4. ubuntu多显示器单触摸屏校准

    多显示器单触摸屏屏幕校准 0.触摸屏重定向 sudo xinput map-to-output 13 DP1  #将触摸屏映射到指定的显示器 其中:13为触摸屏设备id,可通过 xinput命令查看 ...

  5. Win10安装mysql-8.0.11-winx64详细步骤

    安装 mysql-8.0.11-winx64 https://blog.csdn.net/qq_20788055/article/details/80372577

  6. DevExpress v18.1新版亮点——Office File API篇

    用户界面套包DevExpress v18.1日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Office File API v18.1 的新功能,快来下载试 ...

  7. Gym - 100989M(dp)

    George met AbdelKader in the corridor of the CS department busy trying to fix a group of incorrect e ...

  8. AVD Manager 模拟器使用

    一.模拟器配置 1.双击启动AVD Manager,进入配置界面 2.点Create按钮创建 3.配置模拟器基本信息 --AVD Name:设备名称,自己定义一个,用英文(不要用中文) --Devic ...

  9. Python 基础day3

    1.简述bit,byte,kb,MB,GB,TB的关系 1TB=1024GB;   1GB=1024MB ;  1MB=1024kb: 1kb=1024byte ; 1byte=8bit 2.简述as ...

  10. 启动和停止mysql的正确姿势

    1.如果是用脚本起的.那就用脚本停 2.最好用mysql_safe起,mysqladmin -uroot -p shutdown -S /tmp/mysql.sock停 mysqld_safe --d ...