[HAOI 2011] Problem A
[题目链接]
https://www.lydsy.com/JudgeOnline/problem.php?id=2298
[算法]
考虑用总人数 - 最多人说真话
显然 , 对于每个人 , 如果他说的是真话 , 那么他的排名必然在[ai + 1 , n - bi]中 , 否则不合法
统计出每个合法区间相同的个数
那么问题转化为了 :
现在有一些线段 , 每条线段[li , ri]有一个权值wi , 从中选取若干条使得权值和最大
考虑dp
将区间按右端点排序 , 用fi表示前i个区间的最大权值和 , 通过二分求出最大的pos使得rpos < li
有转移方程fi = max{fi-1 , fpos + w}
答案即为n - fn
时间复杂度 : O(NlogN)
[代码]
#include<bits/stdc++.h>
using namespace std;
#define N 100010
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull; struct segment
{
int l , r;
} s[N];
struct info
{
int l , r;
int value;
} e[N]; int n , m , tot;
int a[N] , b[N] , dp[N]; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline bool cmpa(segment a , segment b)
{
if (a.l != b.l) return a.l < b.l;
else return a.r < b.r;
}
inline bool cmpb(info a , info b)
{
return a.r < b.r;
} int main()
{ read(n);
for (int i = ; i <= n; ++i)
{
read(a[i]);
read(b[i]);
if (a[i] + <= n - b[i])
s[++tot] = (segment){a[i] + , n - b[i]};
}
sort(s + , s + tot + , cmpa);
for (int i = ; i <= tot; ++i)
{
if (s[i].l == s[i - ].l && s[i].r == s[i - ].r)
{
if (e[m].value != s[i].r - s[i].l + )
++e[m].value;
continue;
} else
e[++m] = (info){s[i].l , s[i].r , };
}
sort(e + , e + m + , cmpb);
for (int i = ; i <= m; ++i)
{
int l = , r = i , k = ;
while (l <= r)
{
int mid = (l + r) >> ;
if (e[mid].r < e[i].l)
{
k = mid;
l = mid + ;
} else r = mid - ;
}
dp[i] = max(dp[i - ] , dp[k] + e[i].value);
}
printf("%d\n" , n - dp[m]); return ; }
[HAOI 2011] Problem A的更多相关文章
- [BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明)
[BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明) 题面 T组询问,每次给出a,b,c,d,k,求\(\sum _{i=a}^b\sum _{j=c}^d[ ...
- [HAOI 2011]Problem b
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- [HAOI 2011]Problem c
Description 给n个人安排座位,先给每个人一个1~n的编号,设第i个人的编号为ai(不同人的编号可以相同),接着从第一个人开始,大家依次入座,第i个人来了以后尝试坐到ai,如果ai被占据了, ...
- [BZOJ 2299][HAOI 2011]向量 题解(裴蜀定理)
[BZOJ 2299][HAOI 2011]向量 Description 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), ...
- 【BZOJ 2301】【HAOI 2011】Problem b
今天才知道莫比乌斯反演还可以这样:$$F(n)=\sum_{n|d}f(d) \Rightarrow f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)$$我好弱,,,对于$$F( ...
- 数学(莫比乌斯反演):HAOI 2011 问题B
题目描述: 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 输入格式: 第一行一个整数n,接下来n ...
- [HAOI 2011]向量
Description 题库链接 给你一对数 \(a,b\) ,你可以任意使用 \((a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b ...
- HDU 2011 多项式求和
http://acm.hdu.edu.cn/showproblem.php?pid=2011 Problem Description 多项式的描述如下:1 - 1/2 + 1/3 - 1/4 + 1/ ...
- Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011
Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011 Problem A.Chocol ...
随机推荐
- Tomcat安装与IDEA中的配置
下载Tomcat 先从http://tomcat.apache.org/上下载tomcat9,根据你的系统版本来下载. 本地安装 下载之后解压到你的软件安装目录中,这是我的例子: 然后设置环境变量,如 ...
- PowerBuilder -- 数字金额大写
//==================================================================== // 事件: .pub_fc_change_number( ...
- spring4 maven3 mybatis
1 新建maven工程 http://www.cnblogs.com/quanyongan/archive/2013/04/21/3033838.html 如果在第三步中出现错误,比如类似: Coul ...
- python MySQLdb Windows下安装教程及问题解决方法(python2.7)
使用python访问mysql,需要一系列安装 linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装http://www.jb51.net/article/6574 ...
- 初学shell,今天遇到由wget下载到本地的网页源代码的乱码问题,无聊的写了一个转码的脚本
今天用wget想下载文件,结果下载了一堆本地的index.html文件,一查看全是乱码,然后百度了一下,网页的编码格式大概有三种: 1.utf-8 2.gb2312 3.gbk 要在网页源码中的< ...
- jquery Jsonp的使用
<script type="text/javascript"> $(function(){ $.ajax({ url:"test", jsonpCa ...
- lasso the moon
- 我的Java开发学习之旅------>Java语言中方法的参数传递机制
实参:如果声明方法时包含来了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时传给形参的参数值也被称为实参. Java的实参值是如何传入方法?这是由Java方法的参数传递机制来控制的,Java ...
- 《ASP.NET4从入门到精通》学习笔记2
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/dongdongdongJL/article/details/37610807 <ASP.N ...
- 常见C C++问题(转)
这一部分是C/C++程序员在面试的时候会被问到的一些题目的汇总.来源于基本笔试面试书籍,可能有一部分题比较老,但是这也算是基础中的基础,就归纳归纳放上来了.大牛们看到一笑而过就好,普通人看看要是能补上 ...