先把所有人从小到大排序,则

如果一个人说a个人比他大,b个人比他小,等价于他声称[b + 1, n - a]的值是相等的

问题转化为给一些线段,找出一些不重叠的线段,价值最大 (注意:线段可以重合!!!)

然后就是一遍扫过去的DP

f[i]表示以线段i为结尾的满足条件的线段最多数

f[i] = max(f[j]) + cnt[i], 其中r[j] < l[i], cnt[i]表示i这条线段重合次数

DP要优化的说,不过只要二分一下嘛就好了!

 1 /**************************************************************
 2     Problem: 2298
 3     User: rausen
 4     Language: C++
 5     Result: Accepted
 6     Time:792 ms
 7     Memory:5012 kb
 8 ****************************************************************/
 9
10 #include <cstdio>
11 #include <algorithm>
12 #include <utility>
13 #include <map>
14
15 using namespace std;
16 typedef pair<int, int> P;
17 const int N = 100005;
18 struct data{
19     int x, y, cnt;
20     bool f;
21 }a[N];
22 inline bool operator < (const data a, const data b){
23     return a.y == b.y ? a.x < b.x : a.y < b.y;
24 }
25 map <P, int> M;
26 int n, f[N], X, Y, l;
27
28 inline int read(){
29     int x = 0, sgn = 1;
30     char ch = getchar();
31     while (ch < '0' || ch > '9'){
32         if (ch == '-') sgn = -1;
33         ch = getchar();
34     }
35     while (ch >= '0' && ch <= '9'){
36         x = x * 10 + ch - '0';
37         ch = getchar();
38     }
39     return sgn * x;
40 }
41
42 int main(){
43     n = read();
44     for (int i = 1; i <= n; ++i){
45         X = read(), Y = read();
46         a[i].f = (X + Y >= n);
47         a[i].x = n - X, a[i].y = ++Y;
48         if (a[i].x > a[i].y) swap(a[i].x, a[i].y);
49         a[i].cnt = min(M[make_pair(a[i].x, a[i].y)] += a[i].f ^ 1, a[i].y - a[i].x + 1);
50     }
51     sort(a + 1, a + n + 1);
52     for (int i = 1; i <= n; ++i){
53         if (a[i].f){
54             f[i] = f[i - 1];
55             continue;
56         }
57         l = lower_bound(a + 1, a + i, (data){-1, a[i].x}) - a - 1;
58         f[i] = max(f[i - 1], f[l] + a[i].cnt);
59     }
60     printf("%d\n", n - f[n]);
61     return 0;
62 }

View Code

转载于:https://www.cnblogs.com/rausen/p/4345380.html

BZOJ2298 [HAOI2011]problem a相关推荐

  1. [LG P2519][BZOJ2298][HAOI2011]problem a

    [LG P2519][BZOJ2298][HAOI2011]problem a 题目描述 一次考试共有n个人参加 第i个人说:"有ai个人分数比我高,bi个人分数比我低." 问最少 ...

  2. BZOJ2298 [HAOI2011]problem a 【dp】

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

  3. BZOJ2298: [HAOI2011]problem a(带权区间覆盖DP)

    Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 1747  Solved: 876 [Submit][Status][Discuss] Descrip ...

  4. [POI2007]ZAP-Queries [HAOI2011]Problem b 莫比乌斯反演

    1,[POI2007]ZAP-Queries ---题面--- 题解: 首先列出式子:$$ans = \sum_{i = 1}^{n}\sum_{j = 1}^{m}[gcd(i, j) == d]$ ...

  5. BZOJ2301: [HAOI2011]Problem b

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MB Submit: 6435  Solved: 2986 [Submi ...

  6. [HAOI2011]Problem c

    链接 P2523 [HAOI2011]Problem c 想法还是很巧妙的. 其实只是问一个先后顺序,因为编号相同的话,那么\(id\)小的就在前面,\(id\)大的就在后面. 所以我们考虑的是到底有 ...

  7. BZOJ 2301 [HAOI2011]Problem b

    2301: [HAOI2011]Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函 ...

  8. BZOJ 2301: [HAOI2011]Problem b

    二次联通门 : BZOJ 2301: [HAOI2011]Problem b /*BZOJ 2301: [HAOI2011]Problem b莫比乌斯反演 + 容斥将k除下来后就变为了一道原题后像求二 ...

  9. 【BZOJ 2298】 2298: [HAOI2011]problem a (DP)

    2298: [HAOI2011]problem a Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 1326  Solved: 637 Descrip ...

最新文章

  1. [BZOJ1857][Scoi2010]传送带
  2. STL中的双向队列deque
  3. 中国安防为何世界最强?中科院AI+安防报告,解密8大趋势和8大限制【附下载】| 智东西内参...
  4. java 字符串原子变量,如何在java中提供原子读/写2个变量?
  5. Stanford CS107 Programming Paradigms 编程范式
  6. layui网页html编辑器,layui使用富文本编辑器
  7. android 减速动画,Android View Animation
  8. python决策树 value_机器学习 | 算法笔记(四)- 决策树算法以及代码实现
  9. 区块链教程(三):Solidity编程基础
  10. SQL Server数据库镜像的FailOver自动连接
  11. Ruby之散列与快排小程序
  12. mysql索引机制_mysql索引原理详解
  13. 揭秘微信朋友圈这种信息推流背后的系统设计
  14. Nginx location
  15. 笔记_python库jpype安装和使用,及如何打包java程序供Python调用
  16. Squid缓存代理服务器
  17. CentOS7 ifup 和 ifdown
  18. bigbrother的python第一天 复习基础知识
  19. 刚子扯谈:专注 极致 口碑 快
  20. javascript之活灵活现的Array

热门文章

  1. [快速数论变换 NTT]
  2. JSBinding+SharpKit / 菜单介绍
  3. JPA学习---第五节:日期和枚举等字段类型的JPA映射
  4. SQL--数据库性能优化详解
  5. 使用Sencha Designer来快速开发web用户界面 -- 初识Designer
  6. 仿苹果的导航,有点凹陷的感觉
  7. ios html cookies,iOS-WKWebView携带cookie发送http请求,cookie失效
  8. 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析
  9. 《HeadFirst设计模式》笔记
  10. 求数的绝对值一定是正数_人教版七年级数学上册1.2.4绝对值同步练习