greedy algorithm
文章平均质量分 73
freshXD
爱是势均力敌
展开
-
poj Wooden sticks
#include #include #include #include #include #include using namespace std; const int maxn = 5010; class stick{ public: int length; int weight; bool operator < (const stick & item) const { if(we原创 2014-01-22 09:23:08 · 566 阅读 · 0 评论 -
poj Gone Fishing
#include #include #include #include #include using namespace std; const int maxn = 30; int hour,lakenum; int f[maxn],t[maxn],d[maxn]; int ans,curBest[maxn],copyf[maxn],finalans[maxn]; //curBest记录在当前原创 2014-01-22 08:28:34 · 770 阅读 · 0 评论 -
poj Game Prediction
题目大意: m个玩家,每个人n张牌,(2 样例: 2 5 1 7 2 10 9 6 11 62 63 54 66 65 61 57 56 50 53 48 0 0 分析: 以第一组样例为例: 牌点数为1-10,这样10和9一定能赢,而7则不一定(因为8在别人手里) 同理对于第二组样例: 66,65一定能赢,但63不一定(因为64在别人手里) 但63,62,61里原创 2014-01-22 09:59:55 · 650 阅读 · 0 评论 -
poj Radar Installation
题目大意: 给定x轴上方n个点的坐标和一个半径,求出x轴上的最少点的个数,使得以这些点为圆心的圆覆盖住x轴上方所有的点 解法: 首先,如果存在y>d的点,那就没有solution 由点的纵坐标和半径可以确定出覆盖住每个点的圆心的横坐标范围 将这些范围按起点优先排序, 为了尽可能的少用x轴上的点,就要使得每个点尽可能的向右 即对于范围的左端点在最左端的点,要取其右端点作为圆心位置 若原创 2014-01-22 15:57:28 · 619 阅读 · 0 评论 -
poj 2709 Painter
题目大意: 一套颜色里有3-12瓶,每瓶50ml,等量(xml)三种不同的颜色混合可以得到xml grey(3 * x xml颜色混合后体积不会变大), 给定一套颜色里的瓶数N和需要这N中颜色及灰色的数量,求最少需要多少套颜色? 思路: 写到这才发现这是个求最优解问题 首先,N种不能通过混合得到的颜色只能直接取得,记这N种需要数量最多的为max ml,若max % 50 == 0,则从ma原创 2014-02-17 21:41:44 · 666 阅读 · 0 评论 -
poj 2586 greedy
#include #include using namespace std; int main(){ //貌似代码里默认0元是surplus int s,d,surplus; while(scanf("%d%d",&s,&d)!=EOF){ bool flag = false; if(s >= 4 * d){ flag原创 2014-02-17 22:17:13 · 612 阅读 · 0 评论 -
poj 2325
#include #include #include #include #include #include using namespace std; /*如果这个数有>7的质因子,那么there is no possible answer*/ /*一位的质数*/ const int maxlength = 1005; char digit[maxlength]; char divisio原创 2014-02-19 14:04:41 · 654 阅读 · 0 评论 -
poj 3258
这道题的解法比较巧妙(一开始没有想到) 用了二分搜索来确定解 一开始我的想法是找到一个距离最小的间隔,如果在边上(间隔起点为0 Or 间隔终点为N+1),那么就和唯一相邻的合并,否则的话向两边找,如果左边的比右边的长, 就和右边的合并(提高最小间隔的数值),如果右边的长,相同道理和左边合并;两边一样长时,继续向两侧找;如果一直试到边上两边都一样长,那么随便选一个; 如果在一侧碰到边以前两边原创 2014-02-20 10:26:43 · 581 阅读 · 0 评论