题意:
有n个人每人有一个力气值Si,美丽值Bi,满足Bi>Bj&&Si>Sj 或者 Bi<Bj&&Si<Sj 的人可以
一起参见晚会,问最多有多少人可以一起参见晚会。
思路: 我们根据S从小到大将所有人排序,然后看B最长的上升子序列的长度求出来即可!
在排序中优先对S排序,S相等的则对B进行由大到小的排序,why?
也就是对于S相同的,我们先选取B最大的值插入LIS中,因为比如 S1=1, B1 = 1
S1=1, B1 = 2, S1=1, B1 = 3, 如果不进行排序,直接按照求B中的lis,显然长度
为3,显然是不对的,因为相同的S中只能选择一个B出来!所以就要对S相同的B进行
降序排序! 这样就变成了一个裸lis!

 1 #include<iostream>
 2 #include<cmath>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cstdio>
 6 #define N 100005
 7 using namespace std;
 8
 9 struct node{
10     int x, y;
11     int p;
12 };
13
14 bool cmp(node a, node b){
15     if(a.x == b.x)
16            return a.y > b.y;
17     return a.x < b.x;
18 }
19
20 bool myCmp(node a, node b){
21     return a.y <= b.y;//这里要写成 <=;因为upper_bound返回的是“元素值 >插入值”
22                       //最后一个插入值的位置,元素值 == 插入值的时候,默认 元素值
23                       // >插入值,但在该题中,相等的情况下不能算在lis中的!
24 }
25
26 node a[N];
27 node c[N];
28
29 int pre[N], path[N];
30
31 int main(){
32     int n;
33     while(scanf("%d", &n) != EOF){
34         for(int i=0; i<n; ++i)
35             scanf("%d%d", &a[i].x, &a[i].y), a[i].p = i+1;
36
37         sort(a, a+n, cmp);
38         c[0] = a[0];
39         pre[0] = 0;
40         path[0] = 0;
41         int len = 1;
42
43         for(int i=1; i<n; ++i){
44             int k = upper_bound(c, c+len, a[i], myCmp) - c;
45             pre[i] = k ? path[k-1] : 0;//当前插入节点i的位置为k,它的前一个(k-1位置)元素的序号!
46             path[k] = i;//当前插入k位置的节点的序号
47             c[k] = a[i];
48             if(k+1 > len) len = k+1;
49         }
50         int tmp = path[len-1];
51         printf("%d\n", len);
52         printf("%d", a[path[len-1]].p);
53         for(int i=len-2; i >= 0; --i){
54             tmp = pre[tmp];
55             printf(" %d", a[tmp].p);
56         }
57         printf("\n");
58
59     }
60     return 0;
61 }

View Code

转载于:https://www.cnblogs.com/hujunzheng/p/4004777.html

AC_Dream 1216 G - Beautiful People相关推荐

  1. python内存管理机制_[转] Python内存管理机制

    一.引用计数 1.变量与对象 变量赋值的时候才创建,它可以指向(引用)任何类型的对象 python里每一个东西都是对象,它们的核心就是一个结构体:PyObject 变量必须先赋值,再引用. 比如,你定 ...

  2. 程序员是否必须会算法

    本章的标题既然是"程序员与算法",就必然要涉及一个基本问题,那就是"程序员是否必须会算法".这是一个充满争议的问题,虽然并不像"生存还是毁灭" ...

  3. 水果(数据结构与算法)(python)

    现在有水果,雪梨,苹果,红苹果.青苹果等几个类,水果有美容等功能,雪梨有除了美容的功能还有止咳的功能,苹果除了美容的功能,还有被当成礼品赠送的功能.红苹果的颜色是红色的,青苹果的颜色是青色的,并且青苹 ...

  4. 【Python | 杂代码】从0爬妹子图片教程,难道我也下海了?

    往期精彩: 100多g Python 学习资源分享: 以前的爬虫文章: 下期分享预告:100多G精选Java学习资源(本周六) 前言: 正规妹纸图片网站.58同城房源信息.微信公众号文章, 分三期推送 ...

  5. 文件上传之伪Ajax方式上传

    From: <由 Windows Internet Explorer 8 保存> Subject: =?gb2312?B?zsS8/snPtKvWrs6xQWpheLe9yr3Jz7SrI ...

  6. ACdream 1216 Beautiful People 二路最长上升子序列

    题目描述: Description The most prestigious sports club in one city has exactly N members. Each of its me ...

  7. G - Mike and gcd problem

    G - Mike and gcd problem Mike has a sequence A = [a1, a2, ..., an] of length n. He considers the seq ...

  8. 爬虫---Beautiful Soup 通过添加不同的IP请求

    上一篇爬虫写了如何应付反爬的一些策略也简单的举了根据UA的例子,今天写一篇如何根据不同IP进行访问豆瓣网获取排行版 requests添加IP代理 如果使用代理的话可以通过requests中的方法pro ...

  9. HDU Redraw Beautiful Drawings 推断最大流是否唯一解

    点击打开链接 Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 ...

最新文章

  1. 今天是星期四,不知道是不是由于太想家了,每天晚上做梦遇到家人
  2. php include传参数,浅谈php中include文件变量作用域
  3. 7z解压crc错误_winrar压缩包提示crc校验和错误,文件被破坏的解决办法
  4. python构建字典查大写英文字母ascii编码_python – 字典中ISO短代码的国家名称,如何处理非ascii字符...
  5. Oracle中group by用法
  6. javaSE----继承
  7. Python不能做游戏?Pygame中的对象你了解吗?
  8. 油猴插件-Tampermonkey插件下载
  9. 秋天远程控制V1.0源码(易语言)
  10. AS 使用Statistic插件统计代码行数
  11. APK文件如何查看源代码
  12. 如何在NLP领域做成一件事by周明ACL计算语言学会候任主席(附PDF公号发“NLP做事”下载rar讲座PPT等10文件)...
  13. 解决UIScrollView截获touch事件的一个极其简单有效的办法
  14. 反向传播算法的理论基础,神经网络反向传播算法
  15. FBEC2021 | 对话阿里巴巴云游戏事业部/元境副总经理 龙志勇:坚持研运一体化服务的路线
  16. lterator,Listlterator
  17. 突然发现 ViewState,Linq 水火不容
  18. Python Day8 字符串练习
  19. LearningSpark9:SparkSQL
  20. 【CSDN竞赛第9期】 Python 题解

热门文章

  1. java线性表源代码_线性表java实现之顺序存储源码
  2. python乘法函数_Python中列表与元组的乘法操作示例
  3. apache 统计404日志_Apache监控与调优(四)Apachetop监控
  4. vue TypeError: Cannot read property ‘upgrade‘ of undefined
  5. RabbitMQ 下载、安装、配置、验证_rpm版本(Linux环境)
  6. MyBatis-Plus_入门试炼03
  7. Git分支创建、合并、上传等命令
  8. hilbert谱 matlab,怎么在matlab中做信号hilbert边际谱分析
  9. java没有这样的元素异常_java – 没有这样的元素异常?
  10. qt中xml文件的更新