题目大意:将小的布娃娃套进大的布娃娃总共需要多少个布娃娃。

思路:按宽度作为第一关键字升序排列,高度作为第二关键字降序排列,则高度的LIS就是所求的解。因为宽度是高到低,所以前面的必定能被LIS序列里面的某个数套进去,还有因为20 10不能套进20 10.所以在求LIS是不能用lower_bound(),因为lower_bound()求得是他所处位置但是在等于他本身那个数字的前面。所以要用upper_bound(),就可以了。。

#include <cstdio>
#include <string>
#include <cstring>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <iostream>
#include <iomanip>using namespace std;
#define maxn 20055
#define MOD 1000000007
#define mem(a) memset(a , 0 , sizeof(a))
#define memx(a) memset(a , 0x7f , sizeof(a))
#define LL __int64
#define INF 999999999
struct node
{int w , h;
}arr[maxn];
int g[maxn];bool cmp(node n1 , node n2)
{if(n1.w == n2.w) return n1.h < n2.h;else return n1.w > n2.w;
}int main()
{int t;scanf("%d" , &t);while(t--){int n ;scanf("%d" , &n);for(int i = 0 ; i < n ; i ++) scanf("%d %d" , &arr[i].w , &arr[i].h);sort(arr , arr + n , cmp);memx(g);int ans = 0;for(int i = 0 ; i < n ; i ++){int k = upper_bound(g , g + n , arr[i].h) - g;g[k] = arr[i].h;ans = max(ans , k+1);}printf("%d\n" , ans);}return 0;
}/*
10
4
30 10 20 13 20 14 20 15
4
10 10 20 10 20 10 30 25
4
10 15 20 10 20 30 30 25
3
20 30 40 50 30 40
4
20 30 10 10 30 20 40 50
3
10 30 20 20 30 10
4
10 10 20 30 40 50 39 51
*/

hdu1677 转换LIS相关推荐

  1. jzoj3833-平坦的折线【模型转换,LIS】

    正题 题目链接:https://jzoj.net/senior/#contest/show/2930/3 题目大意 一个平面直角坐标系上有nnn个点,如果两个点之间斜率在−1∼1-1\sim 1−1∼ ...

  2. python3常用内置函数总结

    #(1)作用域 print(globals()) #全局作用域,显示出全局所有函数和变量名 print(locals()) #本地作用域,显示出当前所处作用域的函数和变量名#(2)输入与输出 a = ...

  3. 最长公共子序列(LCS)问题算法详解+例题(转换成LIS,优化为O(nlogn),看不懂你来打我)

    目录 最长公共子序列(LCS)问题 1.朴素做法 O(n2)O(n^2)O(n2) 2.转换成LIS优化O(nlogn)O(nlogn)O(nlogn) 3.P2758 编辑距离 最长公共子序列(LC ...

  4. P3902 递增(LIS+树状数组)

    P3902 递增 尝试转化成已知的问题 : 如果原问题是非严格单调递增,则直接求出 LISLISLIS的⻓度,从n中减去就行了. 注意到这里的aiaiai都是整数,ai<ai+1a_i < ...

  5. LCS最长公共子序列和LIS最长上升子序列——例题剖析

    一.LCS最长公共子序列 最长公共子序列(LCS)问题算法详解+例题(转换成LIS,优化为O(nlogn),看不懂你来打我) longest comment subsequence 模板题 longe ...

  6. Leetcode1713. 得到子序列的最少操作次数[C++题解]:LCS转化成LIS,转化为nlogn做法

    文章目录 本题分析 题目链接 本题分析 本题难在问题转换上. [问题转化1]转化为求两个序列最长公共子序列(LCS)的长度. 然后target 的长度减去 公共子序列的长度,就是答案. 本题数据规模是 ...

  7. [noip模拟]改造二叉树LIS

    1.改造二叉树 [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作"左孩子"和"右孩子&quo ...

  8. 用 Python 将微信热文转换成Word文档 | 神级操作

    不得不说微信公众号已经成为了一个开放平台,每天数以万计的微信公众号文章在这产生,我们关注一个微信公众号每天便可以看到新的文章,我们同时也不知不觉的将好的文章分享到给朋友. 那么如何保存一个好的文章呢? ...

  9. html列表小写字母,python实现大小写字母转换

    python 输入一个字母 如果它是一个小写英文字母 则 char1 = input("请输入一个小写英文字母:");if(ord(char1) >= ord('a') an ...

最新文章

  1. R语言爬取imdb电影海报
  2. map评价吗 voc数据集可以用coco_【庖丁解牛】从零实现RetinaNet(九):使用COCO预训练权重在VOC上训练RetinaNet...
  3. oracle 数据库跨库查询方法
  4. OpenCV 简单的人脸识别
  5. 第3章[3.6] 说透Ext JS的窗口及对话框用法
  6. ftp ---- 配置文件(默认配置文件解读)
  7. 【Mac】789uiojklm键失效、启用小键盘(数字键盘)鼠标键的解决方法
  8. EasyDrv 3.5 Beta 1.5驱动选择工具最新版
  9. 我赔了10万元,因为PPT中用了这些字体-百格活动
  10. python除法运算定律有哪些_小学数学最重要的7个运算定律,都在这里了
  11. vue中设置外部链接
  12. formula 返回list_Formula element (List)
  13. linux如何编写crontab定时脚本,linux下编写定时任务crontab
  14. 人脸识别门禁项目总结(STM32部分)
  15. 【中文】【吴恩达课后编程作业】Course 4 - 卷积神经网络 - 第二周作业
  16. oracle 添加删除 某个字段,并添加注释
  17. 万字干货!核心用户获取和运营策略
  18. 基于视频分类的打架识别
  19. 百度地图添加标注及图标拖拽及给标注添加右键
  20. iphone遮住听筒/感应器/摄像头黑屏的解决办法

热门文章

  1. 2021最新版成语接龙小程序源码
  2. cad怎么将图层后置_CAD图层遮挡,如何将CAD图形进行前置或者后置?
  3. 15、Access数据库偏移注入
  4. Nood.js C++ 模块 addon插件(二)
  5. 地球信息科学与技术类毕业论文文献有哪些?
  6. 神经网络——最易懂最清晰的一篇文章
  7. 【GameMaker】分离文件路径、文件名、后缀
  8. AI 加持实时互动|ZegoAvatar 面部表情随动技术解析
  9. CF1139C Edgy TreesDFS求连通块大小、思维
  10. 2022数学建模高教杯国家一等奖经验分享