• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
tmeteorj
Nothing is so big that it is impossible to get over, and hurt only serves to make us stronger. 没有什么事是大到无法战胜的,痛苦也只会让我们变得更加坚强。
博客园 | 首页 | 新随笔 | 新文章 | 联系 | 订阅 订阅 | 管理

随笔分类 -  ACM 贪心

 
POJ 3544
摘要:题意:n头猪分别送往n座城市,每头猪重量不同,每一千克运送一公里会花费t元,每个城市距离养猪场的位置也不同,单位猪的价格也不同,求最优分配方案。题解:贪心,每座城市猪的单位价格p减去到这座城市的距离d乘以t为把猪送到这座城市的单位获益,重的猪就送往获益大的地方。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 typedef long long LL; 6 struct data 7 { 8 LL p,d; 9 int 阅读全文
posted @ 2012-10-23 12:20 tmeteorj 阅读(231) 评论(0) 推荐(0)
POJ 3045
摘要:题意:这道题居然和今年成都赛区的倒数第二题一模一样。。。或者说该反过来说、、给你n头牛叠罗汉,每头都有自己的重量w和力量s,承受的风险数就是该牛上面牛的总重量减去它的力量,题目要求设计一个方案使得所有牛里面风险最大的要最小。题解:按照w+s贪心叠,越大的越在下面。如果最优放置时,相邻两头牛属性分别为w1,s1,w2,s2,第一头牛在第二头上面,sum为第一头牛上面的牛的体重之和,那么第一头牛风险:a=sum-s1;第二头牛风险:b=sum+w1-s2;交换两头牛位置之后a'=sum+w2-s1,b'=sum-s2,由于是最优放置,所以w2-s1>=w1-s2,即w2+s2 阅读全文
posted @ 2012-10-09 20:45 tmeteorj 阅读(613) 评论(0) 推荐(0)
POJ 3263
摘要:题意:n头牛排成一行,告诉你最高的牛的高度h以及位置i,然后有r个信息(x,y),告诉你第x头牛向某一个方向最多可以看到第y头牛,即位于[x+1,y-1]区间内的牛都比它小,问每头牛最大可能高度是多少。题解:对每个信息(x,y)建立区间[x+1,y-1],并标记属于区间的左还是右,意味着这区间里的牛会被至少有一头牛给高度鄙视= =!然后,就是求区间的重叠数了,某个点的区间重叠数是k,那么它的最大高度就是h-k,另外需要注意的就是,要自己去重,题目可能有完全相同的冗余信息,这些信息都应该只记录一次,即哪怕一头牛身高在不堪,也不能被同一头牛给反反复复鄙视,鄙视可是要降身高的啊~~View Code 阅读全文
posted @ 2012-10-09 09:18 tmeteorj 阅读(369) 评论(0) 推荐(0)
POJ 2454
摘要:题意:每个城市有1000头牛,其中各个城市又有一些“Jersey Cows”,现在要将城市均分为3份,使得至少两份Jersey Cows的数量之和超过那份区域牛总数的一半。题解:先踢出Jersey Cows最少的K座城市,统计剩下的两份Jersey Cows数量,随机交换它们直到满足题意。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<ctime> 5 #include<cstdlib> 6 using namespac 阅读全文
posted @ 2012-10-05 16:47 tmeteorj 阅读(326) 评论(0) 推荐(0)
POJ 3282
摘要:题意:船载车过河,车有长度,船也有长度,给出每辆车来的顺序以及到达的岸,问最少渡几次。题解:贪心,能装多少装多少,每次都尽可能多装。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<list> 5 using namespace std; 6 list<int> ql,qr; 7 int main() 8 { 9 int T;10 for(scanf("%d",&T);T;T--)11 {12 阅读全文
posted @ 2012-10-04 14:30 tmeteorj 阅读(171) 评论(0) 推荐(0)
POJ 2573
摘要:还有一道比这道题更简单但是一样的题,忘了题号了,那题只求最少时间,实际上两题差不多,贪心策略1、让划船划的最快的人依次与最慢的两人组队去对面,然后他在把船划回来,这样到对岸的时间花费很多,但是回来的时间少。2、先让最快的两人去对岸,然后让其中一人把船划回来,再让最慢的两人组队去对岸,让先前还剩下那人把船划回来,这样使得到对岸的时间减少了,但是划回来的时间增多了。依靠上面两个贪心策略,执行一次后得到的状态都是相等的,于是可以递归解决,每次进行比较,看哪种贪心策略更优,直到要过河的人小于4#include<cstdio>#include<cstring>#include&l 阅读全文
posted @ 2012-09-06 21:06 tmeteorj 阅读(375) 评论(0) 推荐(0)
POJ 3044
摘要:姑且算作贪心吧,从左往右遍历,对于每一个从点,如果它的那个高度没有被其他木板占据,就让它尽可能向右延伸,最后看有多少次这种伸展操作。可以利用像并查集一样的结构来储存每个点最多能延伸到多远。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int to[50005],a[50005],y[500005]; 6 int main() 7 { 8 int n,w; 9 while(scanf("%d%d" 阅读全文
posted @ 2012-09-04 20:48 tmeteorj 阅读(486) 评论(0) 推荐(0)
POJ 2437
摘要:贪心策略,从左往右,在保证最左边那点能覆盖同时尽可能往右覆盖,貌似很多题都可以这样贪。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 struct data 6 { 7 int s,e; 8 bool operator<(const data &ne)const 9 {10 if(s!=ne.s)11 return s<ne.s;12 else13 ... 阅读全文
posted @ 2012-09-04 20:09 tmeteorj 阅读(319) 评论(0) 推荐(0)
POJ 2431
摘要:d,p记录当前距离与总油量,初始化就是题目给的值,然后每次从能到达的点中选择一个油量最多的点与p相加,即现在p代表去该点加油后又乘时光机回到原来位置的总油量~结束条件为:1、没有可以到达加油站了。2、d<=p,即能到终点了。#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;struct data{ int dis,val; bool operator<(const data &next)const { r 阅读全文
posted @ 2012-08-30 12:52 tmeteorj 阅读(655) 评论(0) 推荐(0)
 

公告


博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3