贪心算法
Joyyiwei
这个作者很懒,什么都没留下…
展开
-
HDU - 4803 Poor Warehouse Keeper(贪心)
DescriptionJenny is a warehouse keeper. He writes down the entry records everyday. The record is shown on a screen, as follow: There are only two buttons on the screen. Pressing the button i原创 2014-10-20 14:58:00 · 1398 阅读 · 0 评论 -
UVALive - 3507 Keep the Customer Satisfied
题意:收到n个订单,每个订单有q,d分别代表做这个的时间,和最晚的完成时间,问你最多能接受几个订单思路:贪心,我们显然要按最早的完成时间排序,那么接下来,我们用(6,8)和(4,9)做为例子,按照我们的贪心原则我们首先选择(6,8),然后再(4,9),但显然(4,9)作为首选才是最好的选择,试想一下不能两个都选的情况,就是我们总共做的时间4+6>9(第二个的最迟的时间),那么我们要删除做的时间原创 2014-01-06 23:30:56 · 1177 阅读 · 0 评论 -
POJ - 1456 Supermarket
题意:买卖N件东西,每件东西都有个截止时间,在截止时间之前买都可以,而每个单位时间只能买一件。问最大获利。思路:显然贪心是这道题的方法,如果在商品的最后的日期能买的话,就买,否则看看它之前一天的时间能不能买,依次类推,怎么标记我们能买的日子呢,并查集解决,初始化都是-1,如果被占用了,那么就找前一个节点也就是昨天,直到找到没被占用的日子#include #include #includ原创 2014-01-05 21:34:23 · 1015 阅读 · 0 评论 -
HDU - 1052 Tian Ji -- The Horse Racing
题意:田忌赛马,赢得话有200,输了-200,平局不变,求他最多能得到多少思路:如果他的目前最快的马能大于齐王的,那么就用这匹去比,显然这不会比拿比较慢的去比来的差,同样的道理适用在最慢的比较,如果最快的都比齐王最快的差的话,那么就降低损失,用最慢的去比#include #include #include #include using namespace std;const原创 2013-12-19 22:13:14 · 798 阅读 · 0 评论 -
UVALive - 4254 Processor
题意:有n个任务,每个任务有三个参数,r,d,w,表示该任务必须在[r,d]之间执行,工作量是w,处理器执行速度可以变化,当执行速度是s的时候,一个工作量是w的任务需要需要的执行时间是w/s个工作单位,另外,任务不一定要连续的执行,可以分成若干块,求出处理器执行过程中最大速度的最小值,速度必须是整数思路:最大值的最小值用二分处理,对于一个速度来说,我们可以考虑它在单位时间能做的事,定义原创 2014-01-02 20:45:30 · 1849 阅读 · 2 评论 -
uva 11134 - Fabled Rooks
题意:你的任务是在n*n的棋盘上放n辆车,使得任意两辆车不相互攻击,且第i辆车要在一个给定的矩形Ri之内思路:首先明确的是对于每一辆车它所在的行和列是不互相影响的,那么分别讨论每一辆车的行和列,像八皇后问题一样讨论没一行或列放什么,对于一辆车来说贪心的将它放在尽可能靠前的位置显然不会是更差的#include #include #include #include using namesp原创 2013-12-17 13:05:13 · 778 阅读 · 0 评论 -
UVA - 10718 Bit Mask
题意:求[l,r]之间与n或运算最大值的最小值思路:或运算要最大值且尽量小,那么n位数是1的时候ans同位数的位置要是0,反过来也是,而当ans#include #include #include #include using namespace std;unsigned n,l,r,t,ans;int main(){ while (scanf("%u%u%u",&原创 2013-12-17 20:59:08 · 835 阅读 · 0 评论 -
UVA - 11636 Hello World!
题意:求最少通过几次复制可以达到n,每次都可以复制一部分思路:显然每次全部都复制是最快达到n,也就是求2^k#include #include #include #include #include using namespace std;int main(){ int n,cas = 1; while (scanf("%d",&n) != EOF && n >原创 2013-12-14 21:45:53 · 745 阅读 · 0 评论 -
UVA - 11729 Commando War
题意:有N个部下,第i个部下你要花Bi分钟交代任务,然后他立即独立不间断的执行Ji分钟,你需要交代任务的顺序,使得所有的任务尽早的完成,注意,不能同时给两个部下交代任务,但部下可以同时执行他们各自的任务,求所有任务完成的最短时间,思路:贪心:按照J从大到小的顺序给各个任务排序,然后依次交代#include #include #include #include #include u原创 2013-11-24 16:29:39 · 793 阅读 · 0 评论 -
ZOJ - 3627 Treasure Hunt II
题意: 直线上有n个城市, 第i个城市和i+1个城市是相邻的. 每个城市都有vi的金币. Alice和Bob站在城市p, 他们每天可以选择走向一个相邻的城市, 也可以选择不走. 他们是单独行动的. 他们经过一个城市就可以获得相应的金币(不能重复获得) 作为一个队伍, 他们的最远距离不能操作M, 问T天内, 他们最多一共能拿多少金币?没能写出来,看了学长的:点原创 2013-11-17 17:16:34 · 1122 阅读 · 0 评论 -
UVA - 607 Scheduling Lectures
题意:给你n个课题,在给你L,C,代表一堂课的时间和一个常数,还有每个课题的时间,要求课题的顺序必须是严格的从小到大就是Ni必须在Ni+1后上,课题必须严格的在一堂课上,同时,如果在每堂课的最后如果能留有10分钟以内的时候,那么学生的不满意程序是最小的。不满意程度的计算如下所示:D=0(如果剩下的时间是0)。D=-c(如果剩下的时间在10分钟以内)。D=(t-10)^2(剩下的情况原创 2013-09-28 22:47:38 · 907 阅读 · 0 评论 -
UVA - 12260 Free Goodies
题意:觉得学长写的很好,借鉴了:点击打开链接#include #include #include #include using namespace std;const int INF = 0x3f3f3f3f;const int MAXN = 1010;struct node{ int x,y; bool operator <(const node &a)con原创 2013-12-23 21:54:37 · 1029 阅读 · 0 评论 -
UVALive - 4328 Priest John's Busiest Day
题意:给你N个婚礼的举办时间,只有一个牧师,判断牧师能否参加所有的婚礼(牧师能在任何时间加到婚礼中,必须是整数时刻且参加婚礼的时间必须是有一半以上的时间)思路:贪心处理,因为要参加一半以上的时间,那么中间时刻就是最快能结束这个婚礼的时刻,那么如果每个中间时刻都没有冲突的话,那么就至少这个是能够实现,那么我们开始判断,取一半是最低的可能#include #include #include原创 2014-01-15 20:21:38 · 1174 阅读 · 0 评论 -
UVA - 434 Matty's Blocks
题意:给你正视和侧视图,求最多多少个,最少多少个思路:贪心的思想,求最少的时候:因为可以想象着移动,所以我们统计每个视图不同高度的个数,然后计算,至于的话,就是每次拿正视图的高度去匹配侧视求最大#include #include #include #include using namespace std;const int MAXN = 1000;int k;int vie原创 2014-07-06 12:04:40 · 1002 阅读 · 0 评论 -
HDU 5037 FROG (贪心)
Problem DescriptionOnce upon a time, there is a little frog called Matt. One day, he came to a river.The river could be considered as an axis.Matt is standing on the left bank now (at position原创 2014-10-30 19:21:53 · 1763 阅读 · 0 评论 -
ZOJ - 3829 Known Notation
Do you know reverse Polish notation (RPN)? It is a known notation in the area of mathematics and computer science. It is also known as postfix notation since every operator in an expression follows原创 2014-10-12 21:10:34 · 1544 阅读 · 0 评论 -
Codeforces Round #242 (Div. 2) B. Megacity
The administration of the Tomsk Region firmly believes that it's time to become a megacity (that is, get population of one million). Instead of improving the demographic situation, they decided to ach原创 2014-10-24 09:14:01 · 1081 阅读 · 0 评论 -
codeforces B#264. Caisa and Pylons
Caisa solved the problem with the sugar and now he is on the way back to home.Caisa is playing a mobile game during his path. There are (n + 1) pylons numbered from 0 to n in this game. The py原创 2014-08-30 21:11:16 · 1303 阅读 · 0 评论 -
HDU - 4950 Monster
Problem DescriptionTeacher Mai has a kingdom. A monster has invaded this kingdom, and Teacher Mai wants to kill it.Monster initially has h HP. And it will die if HP is less than 1.Teacher Ma原创 2014-08-14 19:09:37 · 897 阅读 · 0 评论 -
HDU - 4974 A simple water problem
Problem DescriptionDragon is watching competitions on TV. Every competition is held between two competitors, and surely Dragon's favorite. After each competition he will give a score of either 0 or原创 2014-08-21 21:49:58 · 947 阅读 · 0 评论 -
UVA - 10249 The Grand Dinner
DescriptionProblem DThe Grand DinnerInput: standard inputOutput: standard outputTime Limit: 15 secondsMemory Limit: 32 MB Each team participating in this years ACM World Finals cont原创 2014-08-10 11:34:17 · 1277 阅读 · 0 评论 -
UVALive - 2911 Maximum
题意:在满足两个条件的xi的情况下,使得xp1 +xp2 +...+ xpm最大,首先明确p是正整数,所以我们只要满足xi越大,那么等式和就越大,现在我们就是在满足条件的情况下尽量选sqrt(a),,现将等式二两边同时乘以sqrt(a),不等式同样变成了-1= a的话,我们就可以使得x1为sqrt(a),然后再判断剩下的数,当然如果小于tmp,那么我们为了再尽快凑出一个a,所以我们选择xi为,原创 2013-09-08 09:55:50 · 824 阅读 · 0 评论 -
HDU - 1789 Doing Homework again
DescriptionIgnatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in the ho原创 2014-07-28 11:35:41 · 1355 阅读 · 0 评论 -
HDU 4883 TIANKENG’s restaurant
Problem DescriptionTIANKENG manages a restaurant after graduating from ZCMU, and tens of thousands of customers come to have meal because of its delicious dishes. Today n groups of customers come to原创 2014-07-28 11:41:00 · 809 阅读 · 0 评论 -
UVA - 10465 Homer Simpson
题意:在尽量让时间步浪费的情况下使得吃的汉堡最多贪心:#include #include #include using namespace std;const int MAXN = 10005;int dp[MAXN],num[MAXN];int main(){ int m,n,t; while (scanf("%d%d%d",&m,&n,&t) != EO原创 2013-09-13 17:19:24 · 964 阅读 · 0 评论 -
UVA - 757 Gone Fishing
题意:参考点击打开链接#include #include #include #include using namespace std;const int MAXN = 35;int h,n;int ans[MAXN],tmp[MAXN];struct Node{ int no; int rate; int down; int time;原创 2013-09-04 23:46:59 · 745 阅读 · 0 评论 -
uva 10382 Watering Grass
题意:求最少的圆能完全覆盖要求的矩形,其实一个圆有用的部分是与矩形相交的点所构成的矩形,因为多出来的部分还是要其他圆来填满,所以我们就建一个结构体保存圆所形成矩形的左,右坐标,然后就是贪心啦,求已覆盖范围内,最远的矩形添进来#include #include #include #include #include using namespace std;const int MAXN原创 2013-08-31 10:39:03 · 757 阅读 · 0 评论 -
uva 11054 Wine trading in Gergovia
题意:给你一个序列,总和为0,求最小的代价使得,所有的都是0,特殊的地方是只能和临近的操作,贪心是:我们可以先使得第一个数为0,然后再一次类推下去,这样会比先让第二个,或其他的先为0,然后再去操作第一个来的优,#include #include #include #include using namespace std;const int MAXN = 100005;int a[MA原创 2013-08-30 20:08:20 · 691 阅读 · 0 评论 -
uva 10602 Editor Nottoobad
题目大意:有一个编辑器,它有两种命令,“重复上一个单词” 和 “删除前一个字母”,给出一系列字符串,求最少的敲击键盘的次数。题目明明要求第一个字符串应该第一个按,但题解就是直接对所有的字符串进行排序,就按照题解的方法#include #include #include #include using namespace std;int t,n,sum;char arr[20][105]原创 2013-08-30 19:33:20 · 789 阅读 · 0 评论 -
uva 714 Copying Books
题意:小白上的P151页的最大值最小化#include #include #include #include using namespace std;int main(){ int a[505],b[505]; int k,m,num; scanf("%d",&num); while (num--) { long long原创 2013-08-29 16:38:46 · 799 阅读 · 0 评论 -
uva 10714 Ants
题意:求在一根杆上的蚂蚁全部掉下杆最小需要和最大需要多久,如果蚂蚁碰头,两个都会掉转方向,刚开始的蚂蚁朝向是步确定的,所以最小的时间是,最靠近中间的蚂蚁,朝靠近的一边走,而且每只蚂蚁都朝靠近的一边走,最长的时间就是,距离两端相对较长的,因为即使碰头了,也只是交换了位置继续走,不会影响#include #include #include using namespace std;int原创 2013-08-29 09:26:29 · 675 阅读 · 0 评论 -
uva 10020 Minimal coverage
题意:小白的P(154)页,照着书上模拟就行了#include #include #include #include using namespace std; struct Segment { int L, R; bool operator < (const Segment &a) const { if(L !=原创 2013-08-28 19:01:19 · 770 阅读 · 0 评论 -
uva 311 Packets
题意:参考了这里的思路点击打开链接#include #include #include using namespace std;int arr[7];int three[4][2] = {{0,0},{7,5},{6,3},{5,1}};int main(){ while (scanf("%d%d%d%d%d%d",&arr[1],&arr[2],&arr[3],&a原创 2013-08-28 16:20:18 · 759 阅读 · 0 评论 -
uva 10132 File Fragmentation
题意:给你一些文件碎片,问原文件是什么,当然也可能无能找到原文件,其实方法就是:如果能找到原文件的话,一定是最长的一个,如果最长的有好几个的话,也是不影响接下来的查找,然后我们只要在最短的中间寻找就可以了,注意有两种组合方法#include #include #include #include #include using namespace std;const int MAXN =原创 2013-08-26 23:21:39 · 946 阅读 · 1 评论 -
uva 10026 Shoemaker's Problem 贪心
题意:一个鞋匠收到若干单生意,每次他都只能修一双鞋,而没双鞋都有它修理的时间,和没修之前每天的赔偿,思路:假设F1,T1,F2,T2,分别是第一双鞋的赔偿和时间,以及第二双鞋的赔偿和时间,我们假设先选第1双,那么总赔偿就是F2*T1,如果是第2双就是F1*T2,那我们当然是选赔偿最少的了,如果F2*T1 #include #include #include using namespace原创 2013-08-28 11:13:34 · 799 阅读 · 0 评论 -
uva 10905 Children's Game
题意:刚开始是直接比较两个数的大小,果断wrong了,后来发现92和9的这类是错的,恩,其实我们只要每次都将两个数的组合情况比较一下,也就可以得到答案了#include #include #include #include using namespace std;int cmp(string a,string b){ if(a.size() == b.size()) retur原创 2013-08-26 20:30:08 · 632 阅读 · 0 评论 -
UVALive - 2322 Wooden Sticks
题意:启动机器需要一分钟,如果有一块木头的长和重都大于上一个木头,那么这块木头之后就不算再处理了,求最少的时间处理完所有木头,首先先从小到大排序,然后找当前这块木头是否有大于一堆木头,那么就加进去,并修改最大值,没有的话,就自己一类#include #include #include #include using namespace std;const int MAXN = 5002原创 2013-09-06 21:03:42 · 718 阅读 · 0 评论 -
UVALive - 2326 Moving Tables
题意:求最少的时间将桌子搬完,每次需要十分钟,但如果两次的区间步冲突的话,那么这两次是可以同时进行的,首先我们先排序,将尽量靠左边的排在前面,我们每次都先将最小的装进去,然后判断之后是否有可以继续装进去的区间,直到所有的判断完毕#include #include #include #include using namespace std;const int MAXN =205;s原创 2013-09-06 21:47:27 · 735 阅读 · 0 评论 -
UVALive - 2519 Radar Installation
题意:给定n个岛屿坐标,和雷达半径,雷达只能放在x轴上,求出最少放几个雷达能覆盖满所有岛屿。思路:贪心。每个岛屿都有最左和最右最远放雷达能覆盖到的点,我们把这作为左右区间。只要在区间中选中一个位置放雷达。就可以满足该岛屿被覆盖,转换为区间选点问题。#include #include #include #include #include using namespace std;con原创 2013-09-07 12:56:02 · 756 阅读 · 0 评论 -
UVA - 10148 Advertisement
题意:某条街道上有很多个广告位,一个公司在这条街上投放广告,因为不同地方的人流量是不同的,所以公司先做了个调查,共调查了N个人,知道了他们每个人每天在街上走的路段。现在要求找到一些广告位,使得广告位数量最少,但是要求调查到的那些每人至少看到广告K次。如果有人走的路段广告位少于K个,那么要求他在这个路段的所有广告位都要看到。输出要求的广告位的位置。LRJ上的P154,将区间[ai,b原创 2013-09-05 12:40:35 · 645 阅读 · 0 评论