题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1677

题意:

玩俄罗斯套娃,问最后至少还剩几个。

题解:

这题可以和拦截导弹做对比,因为这里是二维的,按w递减h递增的方式来保证在保存的序列中按h升序来排的,从而为二分查找打下基础。

否则,如果按h降序排,保存的序列就会无序,二分结果自然不正确了。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5
 6 const int maxn = 20000 + 10;
 7
 8 struct Node {
 9     int w, h;
10     bool operator < (const Node& tmp) const {
11         return w < tmp.w&&h < tmp.h;
12     }
13 }arr[maxn], dp[maxn];
14
15 bool cmp(Node& n1, Node& n2) {
16     return n1.w > n2.w || (n1.w == n2.w) && (n1.h<n2.h);
17 }
18
19 int n;
20
21 int main() {
22     int tc;
23     scanf("%d", &tc);
24     while (tc--) {
25         scanf("%d", &n);
26         for (int i = 0; i < n; i++) {
27             scanf("%d%d", &arr[i].w,&arr[i].h);
28         }
29         sort(arr, arr + n, cmp);
30         int ans = 0;
31         dp[++ans] = arr[0];
32         for (int i = 1; i < n; i++) {
33             //dp按w降序,h升序排的!!!为了维护h是升序排的,必须保证输入中w相等时h按升序排而不是降序
34             int low = 0, hig = ans;
35             while (low + 1 < hig) {
36                 int mid = low + (hig - low) / 2;
37                 if (arr[i] < dp[mid]) hig = mid;
38                 else low = mid;
39             }
40             if (arr[i] < dp[hig]) {
41                 dp[hig] = arr[i];
42             }
43             else {
44                 dp[++ans] = arr[i];
45             }
46         }
47         printf("%d\n", ans);
48     }
49     return 0;
50 }

转载于:https://www.cnblogs.com/fenice/p/5463992.html

HDU 1277 Nested Dolls相关推荐

  1. hdu 1677 Nested Dolls 子串

    题目: A - Nested Dolls Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  2. HDU OJ 1677 Nested Dolls【二分,LIS】

    原题连接:http://acm.hdu.edu.cn/showproblem.php?pid=1677 题意:每组测试数据给n个硬币,现在给你这n个硬币的长和高,若一硬币的长和高都小于另一个硬币,则这 ...

  3. hdu 4160 (Dolls)二分图的最小路径覆盖

    关于二分图,让人很头疼啊!归结为一句话,就是看不出来题目是二分图的问题. 也许是对二分图不太熟悉吧!需要多练习! 题目大意:给出n个箱子,每个箱子的参数为长,宽,高:(a,b,c):当且仅当箱子s1, ...

  4. EOJ1765 Nested Dolls 最长上升子序列

    本题我试过很多方法,最开始的思路是,一个娃娃可以套另一个娃娃,这种偏序关系可以建图.找出图中最长的路径,然后把那些点删掉,再找出最长的路径,删掉,直至图中没有点,删除的次数就是答案,可是这样会超时.第 ...

  5. HDU1677 Nested Dolls

    /* 这是杭电1677那道题 这算一道动态规划题,说起动态规划,不得不说背包九讲真是大牛呀,每次看都会有些收获 这道题难点之一是将其转化为,求最长单调非递增子序列 记得刚开始看到这道题的时候,没头没脑 ...

  6. 杭电OJ分类题目(2)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(2) HDU Water~~~ HDU 100 ...

  7. Competitive Programming 3题解

    题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...

  8. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  9. python中def的用法 return_Python函数基础--def及return语句地操作

    1·def是可执行的代码 Python的函数是有一个新的语句编写的,即def.不像C这样的编译语言,def 实际上是一个可执行的语句--函数并不存在,直到Python运行了def后才存在.在典型的操作 ...

最新文章

  1. Android笔记——四大组件详解与总结
  2. macbook 分屏软件
  3. Nacos源码NacosServiceRegistry
  4. OpenCV+python调用本地摄像头并录制视频
  5. numpy不用科学记数发 python_Python科学计算库Numpy常用的函数使用
  6. 继Science发文后,Nature也发文评论曹雪涛“误用图片”调查结果
  7. 开源 java CMS - FreeCMS2.6 站点设置
  8. [MySQL Reference Manual] 24 MySQL sys框架
  9. Windows开启SNMP服务----Win7
  10. eclipse html tab宽度,Eclipse 设置Tab键为4个空格
  11. informatica 常见问题及解决方案
  12. JSP+JavaBean+Servlet+Oracle新增功能中对Date类型的字段的处理
  13. 小米路由器4a开发版固件_小米路由器 4A 刷入lean 的 openwrt/lede
  14. GMP法规附录《计算机化系统》那些事儿
  15. linux su文件删除了,UBUNTU linux 批量删除文件
  16. 数组去重10种方法(干货)!!!
  17. CSS基础-04-浏览器调试
  18. Cesium 视锥体绘制,并动态更新朝向
  19. 公共基础知识和计算机相关知识了解农业常识,公共基础知识:农业为本
  20. 火星电竞|电竞数据分发系统架构演进

热门文章

  1. 深度学习笔记(四)(1)卷积神经网络
  2. HashSet要重写equals方法和hashCode方法
  3. 知道魔术的秘密很了不起吗?
  4. 2023AIGC市场研究报告:ChatGPT的技术演进、变革风向与AIGC投资机会分析(附下载链接)...
  5. 湖北武汉机械员培训机械设备安全管理的问题建筑七大员培训
  6. Win11 搜索栏一直在加载的解决办法
  7. Docker 上 gitlab私有化部署及邮箱配置
  8. mysql数据库插入数据语法_数据库请求:插入数据(INSERT)
  9. Java加密解密算法-SHA加密
  10. python下列说法正确的是-以下关于 Python版本的说法中,哪个是正确的?