![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
无敌大饺子
这个作者很懒,什么都没留下…
展开
-
UVA 10714 - Ants
Problem B: AntsAn army of ants walk on a horizontal pole of length l cm, each with a constant speed of 1 cm/s. When a walking ant reaches an end of the pole, it immediatelly falls off it. When two原创 2013-03-16 15:09:35 · 563 阅读 · 0 评论 -
HDU 2192 MagicBuilding(贪心)
首先对size排序,然后随便弄弄就可以了#include #include #include #include using namespace std;const int maxn=10010;int s[maxn],n;bool vis[maxn];int main(){ int t; scanf("%d",&t); while (t--){ scanf("%原创 2013-04-21 15:13:13 · 410 阅读 · 0 评论 -
ZOJ 1543 Stripies(哈夫曼贪心)
我用的是优先队列,每次选择最大的两个进行2*sqrt()操作,再压入队列.#include #include #include #include #include #include #include using namespace std;priority_queueq;int n;int main(){ while (scanf("%d",&n)==1){ whi原创 2013-05-01 09:15:07 · 736 阅读 · 0 评论 -
ZOJ 3508 The War(贪心)
首先对士兵按照maxx排序.然后对于每一个士兵,选择满足[minxi,maxxi]的最小武器.#include #include #include #include #include using namespace std;const int maxn=2501;struct sol{ int minx, maxx; sol(){ minx = 0; maxx原创 2013-05-01 21:53:50 · 577 阅读 · 0 评论 -
UVA 10382 Watering Grass
其实题目是区间覆盖.#include #include #include #include #include #include using namespace std;const int maxn = 10010;struct interval{ double l, r; bool operator<(const interval & rhs)const{ retu原创 2013-06-09 21:49:36 · 411 阅读 · 0 评论 -
UVA 10020 Minimal coverage
最小区间覆盖问题.首先对区间按照x进行排序.定义mleft表示能覆盖到的最左边的点,mright表示最右.每次都要找出这么一个点满足,左边坐标小于mright并且右边坐标最大,然后更新mright#include #include #include #include using namespace std;const int maxn = 100010;struct s原创 2013-06-10 09:01:07 · 417 阅读 · 0 评论 -
UVA 10670 Work Reduction
贪心 每次选择A,B中费用小的方案.#include #include #include #include #include using namespace std;const int maxn = 102;struct agency{ char name[20]; int price; bool operator<(const agency & rhs)const{原创 2013-06-15 17:37:43 · 407 阅读 · 0 评论 -
UVA 434 Matty's Blocks
M比较好计算,N弄了半天时间.首先对于front面的每一个高度front[i],在rightt面里面尽量先找相等的rightt[j],满足没有被其他相同高度front[k] (k != i)的匹配掉,如果找到了就填上front[i],如果没有相等的,找大于front[i]的最右边的rightt[j],然后填掉,如果依旧找不到,那么就留给rightt那边处理.对于rightt做法相同.原创 2013-06-16 14:43:58 · 581 阅读 · 0 评论 -
UVA 111000 The Trip, 2007
先排序在当前已经有的序列中找到这么一个序列满足元素个数最小并且最大元素小于seq[i],将seq[i]插入这个序列的最后,找不到的话就建一个新的序列,放入seq[i]/* * UVA11100.cpp * * Created on: Jun 17, 2013 * Author: root */#include #include #include #in原创 2013-06-18 11:26:12 · 508 阅读 · 0 评论 -
ZOJ 3569 Dr. Zomboss's Revenge(贪心)
刚开始看错了题目,看成了超出忍耐值只用加一次ai就可以了,最后看题解发现是每个超出的植物都要加一个ai.贪心思路就是每行都放bi个,如果有剩余的原创 2014-04-03 20:40:47 · 670 阅读 · 0 评论 -
UVA 1456 Cellular Network(贪心,DP)
题意:(摘自LRJ《训练指南》)手机在蜂窝网络中的定位是一个基本问题。假设蜂窝网络已经得知手机处于c1, c2,…,cn这些区域中的一个,最简单的方法是同时在这些区域中寻找手机。但这样做很浪费带宽。由于蜂窝网络中可以得知手机在这不同区域中的概率,因此一个折中的方法就是把这些区域分成w组,然后依次访问。比如,已知手机可能位于5个区域中,概率分别为0.3、0.05、0.1、0.3和0.25原创 2014-04-18 16:37:30 · 722 阅读 · 0 评论 -
Codeforces 388A Fox and Box Accumulation(贪心)
题意:给出n个箱子,每个箱子都有一个力量值Vi,代表能支撑Vi个箱子,求能把这些箱子摆成的最少的堆数.思路:刚开始想着从大到小排序来做,从第i个箱子开始能放上去的就放上去,题目的最后一个数据很好的否定了这种做法.应该从小到大排序,记录当前堆的个数,能否把当前堆放到下一个箱子上,不能放就作为一堆.#include #include #include using namespace原创 2014-04-07 10:46:41 · 902 阅读 · 0 评论 -
ZOJ 3090 Assemble(二分+贪心)
首先把所有的quality保存下来排序去重复.然后二分quality,对于每一个quality 选择每一类部件的quality大于等于这个quality的价格最小的部件.如果这个quality有部件不能达到这个quality或者有所有的最小价格的部件的总价大于预算就往左调quality(二分减小),否则可以往右调quality(二分增大).#include #include #in原创 2013-04-29 22:30:38 · 566 阅读 · 0 评论 -
ZOJ 3703 Happy Programming Contest(贪心+0/1背包)
首先要对每个问题按照所用时间排序,才能保证出来的惩罚时间最小用一个dp数组保存在j时间解决问题i所能得到的attractiveness最大值用一个solcnt数组保存解决的问题数量用一个preTime数组保存当前问题的提交时间用一个peanlSum保存在j时间解决问题i所用的惩罚时间总和这样就可以DP了比赛的时候用的一维数组怎么都过不了,赛后用了二维数组才过了#incl原创 2013-04-20 17:59:45 · 1031 阅读 · 0 评论 -
ZOJ 1117 Entropy(哈夫曼编码)
按照普通的哈夫曼编码来做就可以,只有一个字符的时候要特殊处理下#include #include #include #include #include #include using namespace std;const int maxn=1010;char text[maxn];int cnt[maxn],father[maxn];struct node{ int p,原创 2013-04-18 18:03:27 · 1041 阅读 · 0 评论 -
ZOJ 2109 FatMouse' Trade
简单的贪心,按照J[i]和F[i]的比列从大到小排序,然后计算和,注意M和F[i]为0的情况#include #include #include #include #define INF 1000000000using namespace std;const int maxn=1010;struct node{ int f,j; double ratio; node(i原创 2013-04-03 15:30:25 · 462 阅读 · 0 评论 -
HDU 2111 Saving HDU
贪心,按价值从大到小排序#include #include #include using namespace std;const int maxn=110;struct stuff{ int v,w; bool operator<(const stuff &rhs)const{ return v>rhs.v; }}stuf[maxn];int v,n;int m原创 2013-04-04 13:49:26 · 476 阅读 · 0 评论 -
ZOJ 1025 Wooden Sticks
贪心,按照长度从小到大排序,然后从i开始往后扫描,长度比当前len并且重量比当前wei小的都归到同一段去;自己还是太水#include #include #include #include using namespace std;const int maxn=5010;bool vis[maxn];struct wood{ int l,w; wood(int ll=0,原创 2013-04-04 09:11:09 · 489 阅读 · 0 评论 -
HDU 1800 Flying to the Mars
贪心,从大到小排列,计算数量最少的下降序列,和zoj1025很类似#include #include #include #include using namespace std;const int maxn=3010;int lev[maxn];int n;int main(){ while (scanf("%d",&n)==1) { for (int i=0;i<n;+原创 2013-04-04 11:27:44 · 426 阅读 · 0 评论 -
HDU 2037 今年暑假不AC
开始按照节目的时间长度从小到大排序,然后枚举就可以了#include #include #include #include using namespace std;const int maxn=110;struct Show{ int s,e; bool operator<(const Show rhs)const{ return (e-s)<(rhs.e-rhs.s);原创 2013-04-04 13:14:57 · 449 阅读 · 0 评论 -
HDU 2124 Repair the Wall
#include #include #include #include using namespace std;const int maxn=610;int len[maxn],n,L;int main(){ while (scanf("%d%d",&L,&n)==2) { long long tl=0; for (int i=0;i<n;++i){ scanf(原创 2013-04-04 14:00:06 · 468 阅读 · 0 评论 -
HDU 2570 迷瘴
浓度按照从小到大排序,一直累加到超过W就可以停了,该死的比例转来转去头都晕了.#include #include #include #include using namespace std;const int maxn=110;int P[maxn],n,V,W;int main(){ int t; scanf("%d",&t); while (t--) {原创 2013-04-04 16:26:50 · 534 阅读 · 0 评论 -
UVA 11729 - Commando War
贪心首先按执行时间排序,然后维护一个变量maxJobTimeLeft,表示最大的任务剩余时间,累加所有的分配时间,再加上最后的最大任务剩余时间就是答案#include #include #include #include using namespace std;#define MAX 1010struct node{ int b,j; bool operator<(co原创 2013-03-23 12:06:10 · 345 阅读 · 0 评论 -
UVA 11292 - Dragon of Loowater
简单的贪心,最小的能力匹配最小的直径#include #include #include #include #define MAX 20001using namespace std;int dia[MAX],cap[MAX],n,m;int main(){ while (scanf("%d%d",&n,&m)==2) { if(!n&&!m)break; for原创 2013-03-23 11:21:00 · 371 阅读 · 0 评论 -
HDU 4221 Greedy?
贪心,按照截止时间排序,输出时候长整型应该用%I64d.#include #include #include #include using namespace std;const int maxn=100010;struct Job{ int C,D; bool operator<(const Job &rhs)const{ return D<rhs.D; }}jobs原创 2013-04-08 22:42:53 · 415 阅读 · 0 评论 -
ZOJ 2256 Mincost
n表示长度nn>8:n%8==0每8个距离重设metern%8n%8#include #include using namespace std;int main(){ int n; while (scanf("%d",&n)&&n){ double ans=0; if(n<=8){ n-=4; ans=10; if(n>0){原创 2013-04-13 20:57:41 · 941 阅读 · 0 评论 -
Codeforces 389A Fox and Number Game(贪心)
题意:给出一个序列X,能进行如下操作,选择两个下i, j(i != j), 将Xi的值减去Xj, 求怎么样操作能使的最后序列和最小.思路:做法是每次都找序列里最大的和次大的,最大的减掉次大的,如果都变成了相同的大小,就退出循环.#include #include #include using namespace std;const int MAX = 101;int X[MAX原创 2014-04-07 11:37:21 · 988 阅读 · 0 评论