原题连接:http://acm.hdu.edu.cn/showproblem.php?pid=1677

题意:每组测试数据给n个硬币,现在给你这n个硬币的长和高,若一硬币的长和高都小于另一个硬币,则这来个硬币可嵌套为一个硬币。。求最后剩余的最小硬币数。

思路:首先肯定能想到的是 贪心,不停遍历,不停更新。。复杂度 n*n (超时!!),然后又想到和以前做的题类似,有想到 二分图匹配之最小路径覆盖。。这个题数据20000个点,铁定超时。。看了xiaod的博客,看到一种牛叉的算法。。首先 按照 长 对硬币排序(由大到小),然后对于所有硬币的高组成的一个序列,求最长单调递增子序列的个数,这就是问题的解!仔细想一下,列出求的单调递增序列对应的硬币,发现他们任意两两都是不能嵌套的。然后其余的硬币都可以嵌套进入这些硬币中!这个想法太神奇了……对于求最长单调递增子序列,要是动态规划复杂度n*n,还是要超时的。这里再利用二分查找,复杂度O(n*logn),就能AC了……

代码:

#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int Ans[22000],sum;
struct Doll
{int x;int y;bool operator<(const Doll&t)const{return x>t.x||x==t.x&&y<t.y;}
}d[22000];
bool cmp(Doll t1,Doll t2)
{if(t1.x!=t2.x)return t1.x>t2.x;elsereturn t1.y<t2.y;
}
void Binary(int dd)
{int x=0,y=sum;while(x<y){int mid = (x+y)/2;if(Ans[mid]>dd)y=mid;elsex=mid+1;}Ans[y]=dd;
}
int main()
{int i,j,n,ncase;cin>>ncase;while(ncase--){cin>>n;for(i=0;i<n;i++)scanf("%d%d",&d[i].x,&d[i].y);sort(d,d+n);sum=0;Ans[sum++]=d[0].y;for(i=1;i<n;i++){if(d[i].y>=Ans[sum-1])Ans[sum++]=d[i].y;elseBinary(d[i].y);}cout<<sum<<endl;}return 0;
}

HDU OJ 1677 Nested Dolls【二分,LIS】相关推荐

  1. hdu 1677 Nested Dolls 子串

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

  2. [C#] 逆袭——自制日刷千题的AC自动机攻克HDU OJ

    前言 做过杭电.浙大或是北大等ACM题库的人一定对"刷题"不陌生,以杭电OJ为例:首先打开首页(http://acm.hdu.edu.cn/),然后登陆,接着找到"Onl ...

  3. HDU 1277 Nested Dolls

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1677 题意: 玩俄罗斯套娃,问最后至少还剩几个. 题解: 这题可以和拦截导弹做对比,因为这里是二维的 ...

  4. HDU OJ 动态规划46题解析

    Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955  背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢 ...

  5. HDU - 6070 Dirt Ratio (二分 + 线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6070 题目大意:给定一个序列a,对于任何一个区间 [l,r],它的"Dirt Ratio&q ...

  6. HDU oj 自动交题爬虫

    当我还在acm的时候就很想写这个爬虫了 后来学了python  学了点网页请求方式 然后就来写这个爬虫了 为了记录自己学习的过程写了这一系列博客 首先讲讲我的思路 第一步当然是登陆  和 cookie ...

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

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

  8. HDU OJ ACM Steps 上的题目详细介绍

    之前在杭电 OJ 上做题,看到有 ACM Steps 这个链接,进去之后发现是一个类似于闯关的机制,可以增加做题人的激情--据说完全通关后会有奖励,不知道是不是真的.但是里面没有题目的分类介绍,每一关 ...

  9. hdu 2295 Radar 重复覆盖+二分

    题目链接 给m个雷达, n个城市, 以及每个城市的坐标, m个雷达里只能使用k个, 在k个雷达包围所有城市的前提下, 求最小半径. 先求出每个雷达到所有城市的距离, 然后二分半径, 如果距离小于二分的 ...

最新文章

  1. tensorflow全联接层fully_connected参数解释正确的
  2. JS原始类型:数值的运用技巧
  3. 洛谷 P1273 【有线电视网】
  4. Redis操作key相关API
  5. 执行setenv ethaddr的时候提示Can't over write的原因及解决方法
  6. 程序员从幼稚到成熟会经历哪些变化?你都知道吗?
  7. Spring mvc项目导出jar包无法识别正常映射问题
  8. Tosca :配置环境参数
  9. 电脑里面英文系统的中文简介
  10. java学科竞赛管理系统_《高校学科竞赛管理系统的web前端设计与实现》文献阅读随笔...
  11. 计算机表格计算公式加法,加法公式excel,excel表格如何用公式计算加减乘除混合运算?...
  12. 利用python在excel中画图
  13. 世界上最奇葩的成人礼大盘点,被子弹蚁咬的同时还要跳十分钟舞
  14. java opencv 实现换脸
  15. css之如何清除浮动
  16. sql server数据库卡问题排查
  17. shell 编程 小案例
  18. 阿里云服务器(Windows)如何远程连接?
  19. UE4 pbr概念理解
  20. 【soft6星评论】中台只是一种说法,中小企业主们要擦亮眼睛

热门文章

  1. 前端如何准备数据结构和算法
  2. 机房PDU如何挑选?
  3. winform使用DevExpress美化--基础
  4. 图片尺寸大小怎么修改?分享几款图片处理工具
  5. 编写出版教科书使用作品怎样处理
  6. (努比亚)手机键盘恢复
  7. 【PP那些事儿】工作中心加工持续时间测试
  8. Android Glide加载网络图片不显示,但用网页打开又正常显示
  9. Skype for business企业语音配置之七 设置呼叫转接
  10. jdbc执行sql出现错误: mismatched input ‘,’ excepting ‘.‘ 应该如何解决?