随笔分类 -  基本算法—贪心

摘要:题目链接做题的时候凑的规律,其实可以 用式子推一下的。题意:n对数,每对数有e,k, 按照题目的要求(可以看下面的Hint就明白了)求最小的值。分析:假设现在总的是sum, 有两个e1 k1 e2 k2则先选e1 为 (sum+e1)*k1+(sum+e1+e2)*k2先e2: (sum+e2)*k... 阅读全文
posted @ 2014-07-24 20:06 水门 阅读(4131) 评论(0) 推荐(0)
摘要:题目链接一道很有技巧的贪心题目。题意:有n个机器,m个任务。每个机器至多能完成一个任务。对于每个机器,有一个最大运行时间xi和等级yi,对于每个任务,也有一个运行时间xj和等级yj。只有当xi>=xj且yi>=yj的时候,机器i才能完成任务j,并获得500*xj+2*yj金钱。问最多能完成几个任务,... 阅读全文
posted @ 2014-07-23 10:51 水门 阅读(199) 评论(0) 推荐(0)
摘要:题目和poj 上的一道题几乎一样。题意:已知n棵树距第一棵树的距离,求删掉m棵树后的 树之间 的最小距离 的最大值。思路:二分枚举最小的距离,注意二分的写法。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include... 阅读全文
posted @ 2014-05-01 19:52 水门 阅读(162) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3258题意:一条河长度为 L,河的起点(Start)和终点(End)分别有2块石头,S到E的距离就是L。河中有n块石头,每块石头到S都有唯一的距离问现在要移除m块石头(S和E除外),每次移除的是与当前最短距离相关联的石头,要求移除m块石头后,使得那时的最短距离尽可能大,输出那个最短距离。和3273差不多。。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxn = 50000+10; 8 ... 阅读全文
posted @ 2014-03-17 20:39 水门 阅读(168) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=3273题意:把n个数分成m份,使每份的和尽量小,输出最大的那一个的和。思路:二分枚举最大的和,时间复杂度为O(nlog(sum-max));一道很好的题。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxn = 100000+10; 8 int a[maxn]; 9 10 int main()11 {12 int n, m, i, Max, sum;13 while(~sc... 阅读全文
posted @ 2014-03-13 21:07 水门 阅读(204) 评论(0) 推荐(0)
摘要:题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3607题意:一个卖面包的小姑娘,给第i个来买面包的人的价格是pi, 每个人的时间是ti,问用最小的时间间隔 求最大的平均值。刚开始没有 考虑,后一个的时间间隔要大于之前的最大的时间间隔 才行。。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxn = 1000+10; 8 const int INF = 1 tty)3... 阅读全文
posted @ 2014-03-09 09:37 水门 阅读(319) 评论(0) 推荐(0)
摘要:题目:http://acm.hdu.edu.cn/showproblem.php?pid=1257虽然分类是dp感觉还是贪心比较水 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxn = 1000+10; 8 int d[maxn]; //d数组存储一套系统的目前的发射的最小的高度 9 10 int main()11 {12 int n, i, x, cou, j;13 while(~scanf("%d", &n))14 ... 阅读全文
posted @ 2014-02-26 17:03 水门 阅读(177) 评论(0) 推荐(0)
摘要:题目:http://codeforces.com/contest/389/problem/C题意:给n个箱子,给n个箱子所能承受的重量,每个箱子的重量为1;很简单的贪心,比赛的时候没想出来。、、、、、先从小到大排一下序,然后从最上层向下找,只要能承受住重量就行。而且因为已经排序了找的都是尽量小的。。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 int main() 9 {10 int n,a[110],f[110],sum,x;11 int i,... 阅读全文
posted @ 2014-02-09 20:01 水门 阅读(194) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=2109题意:求一个整数k,使得k满足kn=p。思路:exp()用来计算以e为底的x次方值,即ex值,然后将结果返回。log是自然对数,就是e为底计算的。换底公式 log(b) = log(b) / log(a)。float 的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;double 的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308 1 #include 2 #include 3 int main() 4 { 5 double n,p; 6 ... 阅读全文
posted @ 2013-06-26 16:50 水门 阅读(187) 评论(0) 推荐(0)
摘要:题目连接:http://poj.org/problem?id=2586题意:某公司要统计全年盈利状况,对于每一个月来说,如果盈利则盈利S,如果亏空则亏空D。公司每五个月进行一次统计,全年共统计8次(1-5、2-6、3-7、4-8、5-9、6-10、7-11、8-12),已知这8次统计的结果全部是亏空(盈利-亏空 2 int main() 3 { 4 int s,d,sum; 5 while(~scanf("%d%d",&s,&d)) 6 { 7 sum=0; 8 if(d>4*s) sum=10*s-2*d; 9 else... 阅读全文
posted @ 2013-06-24 22:55 水门 阅读(203) 评论(0) 推荐(0)
摘要:题目:http://poj.org/problem?id=1328题意:建立一个平面坐标,x轴上方是海洋,x轴下方是陆地。在海上有n个小岛,每个小岛看做一个点。然后在x轴上有雷达,雷达能覆盖的范围为d,问至少需要多少个雷达能监测到多有的小岛。思路:从左到右把每个小岛的放置雷达的区间求出,按结束点排序,从左至右看,当发现下一个区间的起始点大于前面所有区间的最小结束点的时候,答案加一。 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 struct node 8 { 9 double a,b;10... 阅读全文
posted @ 2013-06-21 20:06 水门 阅读(138) 评论(0) 推荐(0)
摘要:大范围贪心,小范围背包#include<stdio.h>#include<string.h>long long d[2100];int max_num(int a,int b){ return a>b?a:b;};int main(){ long long i,j; long long m,w[10],p[10],v,n; double val,max; int id,x=1,t; scanf("%d",&t); while(t--) { max=0; for(i=1; i<=3; i++) { ... 阅读全文
posted @ 2013-06-01 17:32 水门 阅读(141) 评论(0) 推荐(0)