cf12D Ball(MAP,排序,贪心思想)】的更多相关文章

逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7736    Accepted Submission(s): 2248 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前.同时,社会是…
淋漓尽致的贪心思想 波谷一定是一位数.波峰一位数不够大的时候加入到两位数就一定够大了的. 当在寻找波谷碰到零了就自然当成波谷. 当在寻找波峰时碰到零时,将前面的波谷加到前一个波峰上.让当前的零做波谷,使得波谷的值尽量小,这就是本题最关键的贪心思想.一直想不到. 代码中:a表示前一个值,b表示当前考虑的值,tag为偶数时表示正在寻找波谷,奇数时在寻找波峰. #include<iostream> #include<cstdio> #include<cstring> #inc…
http://codeforces.com/contest/1294/problem/B 大致题意: 一张图上有n个包裹,给出他们的坐标,一个机器人从(0,0)出发,只能向右(R)或向上(U),问能否收集到所有包裹,如果能,给出字典序最小的路径. 最开始当成搜索题了,其实可以排序+贪心写的. #include <stdio.h> #include <string.h> #include <iostream> #include <string> #includ…
力扣上也有一道类似的题 几乎是一样 输出不同 → 力扣leetcode 435. 无重叠区间 区间贪心是比较经典的 就拿洛谷P1803来举例 题目大意 n个比赛 [开始时间,结束时间] 问一个人最多能参加几个(不能同时参加两个且必须有始有终) 题解 首先考虑最简单的情况,如果区间L1被区间L2包含(图a),那么显然选择L1是最好的,也符合局部贪心思想. 然后把所有区间按左端点(此例子就是开始时间)从大到小排序,如果把重叠的区间去除了,必然得到的是y1>y2>...>yn(图b) 所以选择…
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的TreeMap<K,V>既可满足此类需求,向其构造方法 TreeMap(Comparator<? super K> comparator)  传入我们自定义的比较器即可实现按键排序. 实现代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1…
C++ map排序(按照value值排序)_glp_hit_新浪博客     C++ map排序(按照value值排序)    (2012-07-12 14:19:51)    转载▼    标签:    杂谈        分类: Cpp学习    正常的map默认按照key值排序,而map又没有像vector一样的sort()函数,那么如果将map按照value值排序呢?有两种方法:    1. 将map中的key和value分别存放在一个pair类型的vector中,然后利用vector的…
1 基本思想 选择排序的思想是,每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. 2,算法的实现(Java) package Algorithm; public class SelectSort { /** * @param args */ public static void main(String[] args) { int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,34…
题目:给定一个字符串,求出字符串中每一个单词在字符串中出现的次数 旨意:map的分拣思想. 每一个key的包装类,存放出现的次数 /** * 作为包装类,用来存放英文单词,和该英文单词出现的次数 * @ClassName: Str * @Description: TODO(这里用一句话描述这个类的作用) * @author 尚晓飞 * @date 2014-7-30 下午6:57:29 * */ public class Str { private String st; private int…
NOIP2012BLOCKADE贪心思想证明 这道题的做法是二分时间并检验这个时间是否可行.检验的方法要用到贪心思想. 对于不能到根结点的军队应该尽量向根结点走. 如果军队A能走到根结点但到根结点后剩余的时间不够返回根结点的儿子B,应该让军队A守B. 否则把军队A加入优先队列,用剩余时间小的军队匹配到根结点距离小的儿子. 证明: 一个军队可控制自己和以自己为根的子树.越向上走控制的结点越多. 把这个军队记作A,如果不这样,我们必须要用另一个到达根结点的军队,记作C,因为A剩余时间小于到B的时间,…
STL容器(三)——对map排序 对于map的排序问题,主要分为两部分:根据key排序:根据value排序.下面我们就分别说一下~ 1. 根据key进行排序 map默认按照key进行升序排序 ,和输入的顺序无关.如果是int/double等数值型为key,那么就按照大小排列:如果是string类型,那么就按照字符串的字典序进行排列~ (还记得之前说过的字典序吗?当时我们用到了next_permutation这个库函数!)下面我们展示一个例子,说明map中默认按照key升序排列 的情况. Exam…
BZOJ_4010_[HNOI2015]菜肴制作_拓扑排序+贪心 Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号为1.由于菜肴之间口味搭配的问题, 某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如“i 号菜肴‘必须’ 先于 j 号菜肴制作”的限制,我们将这样的限制简写为<i,j>.现在,酒店希望能求 出一个最优的菜肴的制作顺序,使…
package util; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; /*** * * @author Yang…
题意: N位女士一起聚在一个舞厅.每位女士有三个特征值B,I,R.分别代表美貌,智慧,富有. 对于一位女士而言,如果存在一个女士的B,I,R都分别大于她自己的B,I,R.则她自己会自杀. 统计总共有多少个女士会自杀. 1 ≤ N ≤ 500000 0 ≤ Bi, Ii, Ri ≤ 109 思路: 这题想不出来.看了题解后觉得很妙. 思想和最长上升子序列的贪心做法有相像的地方. 按B从小到大排,若B相等按I自大到小排,若I相等,按R从小到大排. *:存在map里的东西(map[key]=val)必…
Gym Class Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 768    Accepted Submission(s): 309 Problem Description 众所周知,度度熊喜欢各类体育活动. 今天,它终于当上了梦寐以求的体育课老师.第一次课上,它发现一个有趣的事情.在上课之前,所有同学要排成一列, 假设最开始每个人有…
Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16100   Accepted: 4726 Description Windy has N balls of distinct weights from 1 unit to N units. Now he tries to label them with 1 to N in such a way that: No two balls share…
贪心的思想:尽量的从最大值找起.然后在剩余之中,再从最大值找起. 一,题意: M个人,每人N张牌,每轮比较谁出的牌大,最大者为胜.现在给定M和N,以及你的牌,要求输出你至少能确保获得几轮的胜利 从"至少能赢几轮"可以看出:每个人必定都从最大的牌开始出.(只判定输赢两种情况即可)二,思路: 1,输入并从小到大排序; 2,循环并记录赢的次数; 3,输出;三,步骤: 1,sort函数排序 2,先最大的牌比较,再从剩余的牌中,找最大的牌比较,依次循环下去,直到手中牌出完. 循环开始:i = n…
题目是要给n个重量1到n的球编号,有一些约束条件:编号A的球重量要小于编号B的重量,最后就是要输出字典序最小的从1到n各个编号的球的重量. 正向拓扑排序,取最小编号给最小编号是不行的,不举出个例子真的很难理解= =比如这个数据: 1 4 2 4 1 3 2 正确答案是2 4 3 1,会得到的错误答案是4 2 1 3. 一开始我是用了贪心的做法,每次选未安排重量的最小的编号,安排给它尽量小的重量.某个编号能得到的最小的重量的计算是这样的: 计算出约束中重量要小于此编号的编号个数,记为k,这个可以先…
http://poj.org/problem?id=2376 john有n头牛做打扫工作,他想在t时间内每个时间都至少有一头牛在做打扫工作,第一头牛在1,最后一头牛在t时间,每一头牛工作都有一个开始时间和结束时间,现在让我们找出在每个时间点都有牛打扫的情况下,所用牛越少越好,不能满足输出-1. 首先按起点排序,起点相同就按结束时间长的排序,然后贪心,每次选择时满足      当前牛的开始时间<=上一头牛的结束时间加1,并且当前牛的结束时间最大的一个. 注意 : 不必覆盖只要能连接即可.(1 3…
http://hihocoder.com/problemset/problem/1309 题目大意是给定n个任务的起始时间,求问最少需要多少台机器. 有一个贪心的策略就是,如果说对于一个任务结束,必然接一个开始时间最接近这个的比较合算.我们假想一个任务池,那么任务池中最早结束的那个,必然接剩余任务中最早开始的比赛合算(相同开始时间最早结束),而且假设这个任务是P,那么对于一个结束时间晚于P的任务,显然后面的一段时间是浪费的,同样对于一个开始时间晚于P的任务,前面一段是浪费的: 关键在于某个开始时…
题目 With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to time. Different gas station may give different price. You are ask…
HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度.HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null.非同步的.  TreeMap: 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的.TreeMap不允许key的值为null.非同步的. TreeMap默认按key进行升序排序,如果想改变默认…
一,题意: 有f+1个人(包括自己),n块披萨pie,给你每块pie的半径,要你公平的把尽可能多的pie分给每一个人 而且每个人得到的pie来自一个pie,不能拼凑,多余的边角丢掉.二,思路: 1,输入,并找出最大体积的pie 2,二分法记录每一种情况的体积,及能分给几个人, 贪心的思想: 先取能分给n-1个人的最大体积,逐渐减少每份pie的体积 直到最接近n个人都能获得的pie的最大的体积 3, 输出.三,步骤: 1,输入,max存储最大的pie体积 2,二分法: i,退出条件max-min…
题意:给出很多商品,每个商品有价值和出售期限,只能在期限内出售才能获取利润,每一个单位时间只能出售一种商品,问最多能获得多少利润. 只需要按照优先价值大的,其次时间长的排序所有物品,然后贪心选择,从它可以选的时间开始往前遍历,如果某个时间点没有出售过商品,那就放在那个时间出售,就这样就行. #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; struct work{…
注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5959279.html 上一篇博文谈到了集合类的自定义排序方式,那么进一步扩展开来,与集合同等重要的Map有没有类似的自定义排序方法呢?当然是有的,主要分两种,按键排序.按值排序. 而且,按key排序主要用于TreeMap,而按value排序则对于Map的子类们都适用. 一.按键排序 按Key排序主要用于TreeMap,可以实现按照Key值的大小,在对象插入时直接插入到合适的位置,保持Map的顺序性. 来…
package com.abc.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.S…
/** * 通过map 的 value 排序,并返回排序后的第一个条目 * * @param m 待排序集合 * @param desc true:降序排序,false:升序排序 * @return 返回排序后的第一个条目 * */ public Entry<String, Integer> getFristEntryOfSortedMap(Map<String, Integer> m , boolean desc) { Entry<String, Integer> e…
排序问题,STL中默认是采用小于号来排序的,因为设置int等类型做key,它本身支持小于号运算,在一些特殊情况,比如关键字是一个结构体,涉及到排序就会出现问题,因为它没有小于号操作,insert等函数在编译的时候过不去,下面给出两个方法解决这个问题: 第一种:小于号重载,程序举例 #include <map> #include <string> using namespace std; typedef struct tagStudentInfo { int nID; string…
public static Map<String, String> sortMapByKey(Map<String, String> map) { if (map == null || map.isEmpty()) { return null; } //Comparator接口进行排序 Map<String, String> sortMap = new TreeMap<String, String>(new Comparator<String>(…
在java的众多Map实现中,Map基本上是不能保证顺序的(LinkedHashMap可以保证插入顺序或者访问顺序,TreeMap默认按照key升序但可以自定义Comparator),在开发过程中当数据量不是很大的时候,使用HashMap去统计数据非常方便,但是为了使得输出结果更美观一些,我们需要按某种自定义顺序输出. 下面介绍一种排序Map的方法,使用起来很方便,如下面代码: private static class ValueComparator implements Comparator<…
排序: private static List<Map.Entry<String, Long>> sortHashMap(HashMap<String,Long> map) {        System.out.println(map);          List<Map.Entry<String, Long>> list= new ArrayList<Map.Entry<String, Long>>(map.entr…