题解
题目要求是,有两种操作,从头取出一个字符,或者从尾取出一个字符,加到一个新的字符串末端,然后保证这个字符串是所有可能生成的字符串中,字典序排列最小的那个。依旧是贪心的想法,谁小我取谁即可。特殊判断两者相同的。一旦两者相同,那么就接着判断下一种,直到找到更小的为止。
另外需要注意两点,题目的输入很变态,要一个字母一行的输入,所以用cin或者用scanf(" %c", &ch)。cin不多说了,除了慢点其他没啥缺点。scanf中为何要加上一个空格呢?因为在格式串中,空格的意思是匹配输入中的所有换行、TAB...
分类:
其他好文 时间:
2014-06-25 08:46:12
阅读次数:
243
题解
用类似哈夫曼树的思想去考虑,每次选取两个较小的点合并,然后把合并后的放回原集合。用一个小根堆去维护即可。
注意首先,C++的优先队列默认是大顶堆,所以需要改写;其次,改写之后的堆是没有clear()方法的,所以务必记住队列的清空!...
分类:
其他好文 时间:
2014-06-25 07:34:58
阅读次数:
274
题目链接:点击打开链接
题意:
给定n个箱子m个物品
下面n个数字表示箱子的容量
下面m个数字b1-bm 表示物品体积为2^bi大
问最多有多少个物品可以放入箱子。
思路:
贪心,先放小的,小的不能放再放大的
显然我们把n个箱子拆成二进制,然后模拟二进制减法运算。
剩下就是简单模拟
#include
#include
#include
#include
#include
#in...
分类:
其他好文 时间:
2014-06-24 18:52:56
阅读次数:
148
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1006题意:给定一个弦图,求最小染色数。就是用最小数目的颜色进行染色使得任意两个相邻的节点颜色不同。思路:(1)求出弦图的完美消除序列。 (2)贪心染色。从后向前用可以用的编号最小的颜色染色...
分类:
其他好文 时间:
2014-06-23 06:48:40
阅读次数:
207
图论中一个经典问题就是求最短路,最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划,这也是算法中的两大经典代表。用一个简单图在纸上一步一步演算,也是很好理解的,理解透自己多默写几次即可记住,机试时主要的工作往往就是快速构造邻接矩阵了。
对于平时的练习,一个很厉害的 ACMer 说:“刷水题可以加快我们编程的速度,做经典则可以让我们触类旁通,初期如果遇见很多编不出,不妨就写伪代码,理思路,在纸上进行整体分析和一步步的演算,然后在转换成代码,再反复迭代”。L...
分类:
其他好文 时间:
2014-06-22 20:36:46
阅读次数:
269
这题虽然简单但是挺不错的,因为过程很好,比较开发思维 和鼓励人,不像有些贪心太偏不好推反而让人厌烦
给出长度为N的字符串S,然后还有一个空串STR,每次有两个选择 1:删除S的头元素假加入STR中 2:删除S的尾元素加入STR中
是的STR字典序最小 并输出
开始可能没有什么顾虑的去想 每次比较S的头和尾元素 取小的那个删除并假如STR中,但是若S的头和尾元素一样的话这个方...
分类:
其他好文 时间:
2014-06-22 12:03:26
阅读次数:
148
克鲁斯卡尔算法(Kruskal's algorithm)是两个经典的最小生成树算法的较为简单理解的一个。这里面充分体现了贪心算法的精髓。大致的流程能够用一个图来表示。这里的图的选择借用了Wikipedia上的那个。很清晰且直观。首先第一步,我们有一张图,有若干点和边例如以下图所看到的:第一步我们要做...
分类:
其他好文 时间:
2014-06-22 09:46:37
阅读次数:
194
#include#include#include#includeusing namespace std;#define N 2100#define M 11000int t[N];int n,m;int dp[N];int ru[N],op[N];int e[N],ne[M],v[M];int nn...
分类:
其他好文 时间:
2014-06-20 18:25:47
阅读次数:
191
二分算法求最值,掌握了算法的本质和模板,主要就是答案验证过程,验证过程经常使用贪心算法。关键是根据题目要求设立命题check(x)。验证答案mid:Check(mid):是否成立?求满足条件Check(mid)的最小值:–if check(mid) then r:=mid else l:=mid+1...
分类:
其他好文 时间:
2014-06-17 21:19:25
阅读次数:
170
题意:有n条电缆,他们的长度分别为l[i]。如果从n条电缆中切割出K条长度相同的电缆的话,这k条电缆每条最长能多长?答案小数点后保留两位有效数字。输入:n, kn行:l[i]Sample Input4 118.027.434.575.39Sample Output2.00数据范围:1=k);25 ....
分类:
其他好文 时间:
2014-06-17 21:04:38
阅读次数:
226