HDU 4268 - Alice and Bob
来源:互联网 发布:淘宝上信用卡套现吗 编辑:程序博客网 时间:2024/06/05 14:29
时间限制:10.000秒(JAVA)/5.000秒(其他语言)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4268
组队赛秃头了……
当时一晚上死磕的就是这道题,结果到最后也没做出来。看了别人的代码之后有种恍然大悟的感觉,看来思路还是不够开阔啊……
一说“Alice and Bob”八成就是博弈了。题意倒是挺简单,就是输入Alice和Bob的n个矩形的高和宽,当一个矩形高和宽均大于等于另一个矩形的时候,那么这个矩形可盖住该矩形,问Alice最多可以盖住Bob多少个矩形。
可以说是个贪心吧,每次用Alice的一个矩形盖住它能够盖住的最大矩形。自然而然地想到在输入之后要对两个人的矩形进行排序,然后在排好序的结构内二分查找,这是一开始的想法。然而,这题比较麻烦的地方是,排序是先按高再按宽排序或者反过来,然而判断是否盖住需要的是高和宽均大于另一个矩形。比赛的时候就是因为这个问题没有处理好,一开始答案错误,后来超时……
正解则用到了multiset——多重集合容器,天生有序并且允许元素重复。开始将Alice和Bob的矩形全部排好序,排序方式是先高后宽。然后Alice的矩形从小到大挑,每次选一个后将Bob的矩形中高小于等于该矩形的矩形的宽全部放进集合(注意:不是从头开始放,而是从上一次放过的位置继续,具体可见代码),然后再用upper_bound查找(upper_bound找到的是大于传入参数的第一个元素的位置),根据返回的位置判断是否有能够盖住的矩形,如果有,则将该宽的数据删除。因为下一次将Bob矩形放入集合的时候是从上一次放入矩形的最后一个位置向后继续放,所以每个矩形只会存入一次,不会造成重复和时间的浪费。
- HDU 4268 - Alice and Bob
- hdu 4268 Alice and Bob
- hdu 4268 Alice and Bob
- hdu - 4268 - Alice and Bob
- HDU 4268 Alice and Bob
- hdu 4268 alice and bob
- hdu 4268 Alice and Bob
- hdu 4268 Alice and Bob
- HDU 4268 - Alice and Bob
- HDU 4268 Alice and Bob
- Alice and Bob HDU
- HDU 4268 Alice and Bob 贪
- ChangChun_1002 Alice and Bob (HDU 4268)
- hdu 4268 Alice and Bob (set+贪心)
- HDU 4268 Alice and Bob set用法
- HDU 4268 Alice and Bob(贪心+数据结构)
- HDU 4268 Alice and Bob(贪心)
- hdu 4268 Alice and Bob(贪心)
- Cocos2d-x版的HelloWorld工程分析
- 循环删除list中多个元素
- poj 3268 Silver Cow Party(dijkstra最短路)
- 简单LRU cache 实现
- uva10020 - Minimal coverage
- HDU 4268 - Alice and Bob
- Java 写一个单例模式(Singleton)出来
- 初闻桂花香
- HDU 5033 Building (单调栈)
- Duilib学习笔记《02》— 界面布局
- spring的RabbitTemplate 发送Message源码导读
- 【ci框架】codeigniter中如何记录错误日志
- C# 16进制与字符串、字节数组之间的转换
- 常见的测试案例_测试一个纸杯、登录框、搜索框