bzoj2298 Problem a
题目背景:
bzoj2298
分析:DP
额,属于我是真的没有想到这样的状态转移啊······一脸懵逼·····显然一个人在自己前面的有a个,后面有b个,那么这个人的排名区间为[a + 1, n - b]并且,这个区间中所有人的成绩应该相同,定义f[i]表示,排名第i的人的分数不等于第i + 1的分数,那么转移就是f[i] = max(f[i - 1], f[j] + min(i - j, num)) (num表示排名区间为[j + 1, i]的人数)
Source:
/*created by scarlyw
*/
#include <cstdio>
#include <string>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <cmath>
#include <cctype>
#include <vector>
#include <set>
#include <queue>const int MAXN = 100000 + 10;struct data {int l, r;data(int l = 0, int r = 0) : l(l), r(r) {}inline bool operator < (const data &a) const {return (r == a.r) ? (l < a.l) : (r < a.r);}
} p[MAXN];int n, x, y, cnt;
int f[MAXN];
inline void solve() {scanf("%d", &n);for (int i = 1; i <= n; ++i) {scanf("%d%d", &x, &y);if (x + y < n) p[++cnt] = data(x + 1, n - y);}std::sort(p + 1, p + cnt + 1);for (int i = 1, head = 1; i <= n; ++i) {f[i] = f[i - 1];int temp = 0;while (head <= n && p[head].r == i) { if (p[head].l == p[head - 1].l) temp++;else temp = 1;f[i] = std::max(f[i], f[p[head].l - 1] + std::min(temp, i - p[head].l + 1)), head++;} }printf("%d", n - f[n]);
}int main() {solve();return 0;
}
bzoj2298 Problem a相关推荐
- [BZOJ2298]problem a
Description 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n ...
- [LG P2519][BZOJ2298][HAOI2011]problem a
[LG P2519][BZOJ2298][HAOI2011]problem a 题目描述 一次考试共有n个人参加 第i个人说:"有ai个人分数比我高,bi个人分数比我低." 问最少 ...
- BZOJ2298 [HAOI2011]problem a
先把所有人从小到大排序,则 如果一个人说a个人比他大,b个人比他小,等价于他声称[b + 1, n - a]的值是相等的 问题转化为给一些线段,找出一些不重叠的线段,价值最大 (注意:线段可以重合!! ...
- BZOJ2298 [HAOI2011]problem a 【dp】
题目 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个 ...
- BZOJ2298: [HAOI2011]problem a(带权区间覆盖DP)
Time Limit: 10 Sec Memory Limit: 256 MB Submit: 1747 Solved: 876 [Submit][Status][Discuss] Descrip ...
- BZOJ-2298|区间dp|线段树
problem a Description 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) Inpu ...
- linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.
所有的base 都要取消注释 mirrorlist 加上注释 另外所有的enable都要设为零 目录 今天是要yum命令安装EPEL仓库后 yum install epel-release 突然发现y ...
- A + B Problem
1001: A + B Problem Description 计算 A + B. Input 多组测试数据,每组测试数据占一行,包括2个整数. Output 在一行中输出结果. Sample Inp ...
- Error:(49, 1) A problem occurred evaluating project ':guideview'. Could not read script 'https://r
出现问题如下: Error:(49, 1) A problem occurred evaluating project ':guideview'. > Could not read script ...
最新文章
- python类中方法的执行顺序-python 函数或者类 代码的执行顺序
- Quartz集群部署
- c++11或c++14或c++17参数包的使用
- ios keychain 不被清理_苹果手机卸载软件会不会有残留?带你认识iOS沙盒机制!...
- 易语言mysql表新增防止重复_sqlite数据库 大量插入数据时如何避免重复插入(易语言,做好用sql语句写下)...
- 哈工大c语言作业系统,2015秋C语言程序设计
- 计算机大学等级评估,“计算机专业”学科评估,四所高校获A+评级
- Windows2000系统下载安装,怀念一下
- TCP中 滑动窗口RWND 和 拥塞窗口 CWND的区别
- 树莓派(Raspberry Pi) 命令行下如何配置wifi(wlan)
- 工资详情计算器-适用于2022年新税法累计扣税规则
- 目的路径太长如哈删除_文件名超长导致文件无法删除怎么办?
- xgboost缺失值处理
- like查询索引失效问题与解决办法
- 如果心酸就会心动也应行动
- 大数据的淘金之旅,数据治理之数据资产管理
- 如何修改计算机系统的网络最大连接数?
- 一边攒大米,一边做公益
- git报错:LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 解决方法
- 联想卡在logo界面_[联想电脑卡在载入界面有什么解决方法]联想电脑卡在logo界面...