随笔分类 -  贪心

摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3466题目大意是说n个物品每个物品的花费是p,但是如果你现在的钱少于q就买不了这个物品,每个物品的价值是v,求有钱M时的最大价值。一看这个题,就觉得直接按p背包还是按q背包都不对,然后就没有然后了。。。然后看了题解:是说按q-p贪心,其实是这样,每次取q-p最小的,那么每次留下的自然就是最多的金钱。至于严格的证明。。。。。。。待研究剩下的就是01背包了。。,。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 ... 阅读全文
posted @ 2013-12-01 00:54 再见~雨泉 阅读(267) 评论(0) 推荐(0)
摘要:题目 SGU 171相当好的贪心的题目!!!!!题目意思就是说有K个赛区招收参赛队员,每个地区招收N[i]个,然后每个地区都有一个Q值,而N[i]的和就是N,表示总有N个参赛队员,每个队员都有他自己的P值,和他的权值W,只有当一个队员的P大于某一个地区的Q值时,权值W才能被记录在内,问怎样让着N个参赛队员选择地区才能让权值和最大。贪心的思路就是按照权值W贪心1、先按W的降序排序,优先考虑权值交大的。2、歪了不影响后面的参赛队员,W较大的而且满足P>Q的,让其参加p>Q时Q最大的那一个。所以Q值按照降序排序。3、如果某一个找不到一个Q使得P>Q,那么就让他参加Q最大的那一个赛区 阅读全文
posted @ 2013-07-24 22:51 再见~雨泉 阅读(470) 评论(0) 推荐(0)
摘要:对于每一个点,可以找到他在x轴上的可行区域,这样的话就变为了对区间的贪心。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 #define MAX(a,b) (a > b ? a : b)14 #define MIN(a,b) (a a.s);39 }40 41 int main()42 {43 int ca = 1;44 while(... 阅读全文
posted @ 2013-07-22 23:53 再见~雨泉 阅读(250) 评论(0) 推荐(0)
摘要:链接:http://acm.timus.ru/problem.aspx?space=1&num=1303按照贪心的思想,每次找到覆盖要求区间左端点时,右端点最大的线段,然后把要求覆盖的区间改为这个右端点到M这个区间。依次类推下去,这样的话就只需要扫一遍就可以找去来。要做的预备工作就是将线段按照左端点的升序排序就可以了。它的时间复杂度就是O(n)代码一直WA,望大神指教 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include1 阅读全文
posted @ 2013-07-22 23:09 再见~雨泉 阅读(883) 评论(4) 推荐(0)
摘要:题目链接http://codeforces.com/problemset/problem/6/CAlice and Bob like games. And now they are ready to start a new game. They have placed n chocolate bars in a line. Alice starts to eat chocolate bars one by one from left to right, and Bob — from right to left. For each chocololate bar the time, needed 阅读全文
posted @ 2013-02-10 16:06 再见~雨泉 阅读(324) 评论(0) 推荐(0)
摘要:题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2037 1 #include<stdio.h> 2 //快速排序 3 void sort(int *a,int *b,int i,int j) 4 { 5 int x=i,y=j,key=a[i],ke=b[i]; 6 if(x>=y)return ; 7 while(x!=y) 8 { 9 while(x<y&&a[y]>=key)y--;10 a[x]=a[y],b[x]=b[y];11 while(x<y&&a[x]... 阅读全文
posted @ 2013-01-06 16:46 再见~雨泉 阅读(957) 评论(0) 推荐(0)
摘要:题目链接:http://openoj.awaysoft.com/JudgeOnline/problem.php?id=1100题目很长,说了一大段废话,最后其实就是求几个区间相交的总长。这里采用贪心的思想,先只考虑眼前的(所以要先排序),然后比较不同情况考虑:1:内部相交;2:两两部分相交;3:没有相交;只要依次比较就可以了。。。 1 #include<stdio.h> 2 int main() 3 { 4 int m; 5 while(~scanf("%d",&m)) 6 { 7 int i,j,n;double a[110]={0},b[110]={ 阅读全文
posted @ 2013-01-06 16:40 再见~雨泉 阅读(333) 评论(0) 推荐(0)