
挑战例题
readlnh
这个作者很懒,什么都没留下…
展开
-
poj 1852 Ants
题意n只蚂蚁在长度为n的竹竿上以每秒1厘米的速度爬来爬去,爬到竿子端点时就会掉下去。两只蚂蚁相遇它们就会同时掉头(因为竿子很细),问所有蚂蚁都掉下去的最大时间和最小时间。思路这题虽然说是简单题,但是我还是没想到,感觉并不好想,虽然说穿了很简单(大概是我太菜)最短时间很显然,只要所有蚂蚁都往离自己当前位置近的端点爬就行,这样显然不会有蚂蚁相遇。考虑一下两只蚂蚁相遇的情况,虽然两只蚂蚁都掉头了,实际上和原创 2016-08-17 18:41:04 · 298 阅读 · 0 评论 -
poj3617Best Cow Line(贪心)
题意给定长度为n的串s,要构造一个长度为n的新串t,求字典序最小的t。每次操作可以把s的头或者尾那个字符加到t的尾部,t一开始是空字符串。思路很明显的贪心,要使字典序最小,明显每次添加的字符要尽量小。不过,这样子还存在一个问题。比如s为:abbca,这种情况下,显然要把s的首位置那个a加入t才能使字典序最小,所以遇到头尾相同的情况需要看看后面位置的字符大小情况。还有一点,这题80个字符一行输出,看题原创 2016-08-17 20:39:33 · 269 阅读 · 0 评论 -
poj3069Saruman's Army(贪心)
题意直线上有一些点。现在能给一部分点加buff,加了buff的点能影响到周围r的范围内的点。问最少要给多少点加buff才能影响到所有的点思路典型的贪心,每次尽量找能影响到当前的最靠右的点来加buff,加完之后继续从加了buff的那个点影响范围之外的第一个点开始继续找代码#include <cstdio>#include <iostream>#include <cstring>#include原创 2016-08-18 00:52:40 · 463 阅读 · 0 评论 -
poj3253Fence Repair(贪心,哈夫曼编码)
题意有一块木板,要把它切成长度指定的n块 ,每次切断时需要付出这块木板长度的代价,问最少要付出多少代价思路这题切割可以用二叉树表示出来,这样很显然能看出切的次数越多,在树中的深度越深。切的次数越多,显然被计数的(即付出代价)次数越多,那么显然越深的地方木板长度应该越小,以此来构建二叉树。即每次取出最小的两个作为叶子节点。#include <cstdio>#include <iostream>#i原创 2016-08-18 10:14:42 · 469 阅读 · 0 评论 -
poj2431Expedition(贪心,优先队列)
题意有一辆车,要开l的路,它每开一单位的路要消耗一单位的油。车里原来有p的油,车的油箱容量是无限大的。现在路上不同位置有一些加油站,这些加油站里有一定量的油,问开到终点最少要加几次油。思路我们肯定尽量加多一点的油,那么我们这样考虑,假如我经过一个加油站,我就获得了加这个站的油的权利,那么我可以一直走,一直走到没油,这时候取出我前面能加的油里面最多的那个加上继续走代码#include <cstdio>原创 2016-08-18 20:59:25 · 2713 阅读 · 0 评论 -
poj3723 Conscription(最小生成树)
题意要征募n个男兵,m个女兵,每招一个人要10000块钱,现在有一些男兵和女兵有某种关系,导致同时招募他们可以节省一定的钱,给出男女兵的关系,求招募最少要花多少钱。思路其实很简单,选的人里面含有的关系能省的钱要最大,把男女关系连起来形成一个图,就是求这个图的最大生成树。我们猜测最大生成树算法可以类比最小生成树的贪心算法(确实是对的)。不过我们这里可以换个思路,把权值全改成负数,那这样求最小生成树得到原创 2016-09-01 22:37:48 · 435 阅读 · 0 评论 -
poj3169Layout(差分约束)
题意有n头牛,编号是1~n,他们按编号顺序排成一排,这些牛之间有关系好的和关系坏的,关系好的ml对牛,给出他们之间的距离的最大值,关系差的md对牛,给出他们之间距离的最小值。牛可以站在同一个位置上。在满足这些条件的情况下,求编号为1的牛和n的牛距离的最大值。思路假如第i头牛的位置为dist[i],那么必定有dist[i] <= dist[i + 1],然后有最大距离限制,dist[a[i]] + d原创 2016-09-08 19:07:14 · 261 阅读 · 0 评论 -
HDU1796 How many integers can you find(容斥)
题意给定a1,a2…am,求小于n的正整数至少能整除a中一个元素的数有几个?思路求[1,r)内有因子出现在集合中的数的个数。题目要求的数要么含有一个集合中的因子,要么是两个,要么是三个..要么是m个,而含两个集合中因子的数在计算含有一个集合中的因子,被重复计算了,三个时候也在计算二个的时候被重复计算,所以需要用到容斥原理。2^m枚举集合中元素,然后计算出最小公倍数,n/LCM就是1..n中含我们枚举原创 2016-10-03 19:20:08 · 389 阅读 · 0 评论