10054 The Necklace
My little sister had a beautiful necklace made of colorful beads. Two successive beads in the necklace shared a common color at their meeting point. The figure below shows a segme...
分类:
其他好文 时间:
2015-04-29 21:52:47
阅读次数:
227
分析:取出水量最少的节点进行扩展,这样的程序只需要把队列queue换成优先队列priority_queue,其他部分的代码不变,下面的代码把状态(三元组)和dist合起来定义为一个Node类型,是一种常见的写法,如果要打印路径,需要把访问过的所有节点放在一个nodes数组中,然后在Node中加一个变量fa,表示父节点在nodes数组中的下标,而在队列中只存在节点在nodes数组中的下标而非节点本身...
分类:
其他好文 时间:
2015-04-28 18:39:24
阅读次数:
146
// uva116 Unidirectional TSP
// 这题是在紫书(page 270)上看到的,个人理解就是数塔的升级版
// dp[i][j]表示从(i,j)出发到终点所达到的最大价值
// 所以很明显j是逆序的
// 状态转移方程为
// dp[i][j] = min(dp[i][j],dp[row[k]][j+1]+mp[i][j])
// rows[k]表示三行中的一行i,i-1...
分类:
其他好文 时间:
2015-04-21 11:15:12
阅读次数:
191
题目传送: UVA - 116
思路:可以定义状态为dp[i][j] 为从第i行第j列开始往后走到第n列(总共n列)的最小值(赋初始值为无穷),且状态方程很好推出来:dp[i][j] = a[i][j] + max(dp[i-1][j+1], dp[i][j+1], dp[i+1][j+1]); 最后最优解 ans = max(dp[i][1])(1
不过这题难点不在这...
分类:
其他好文 时间:
2015-04-21 09:53:14
阅读次数:
198
题意:给定两个空桶的容量分别为A、B,经过6种操作使获得C升水,求最少操作数;思路:广搜。最少操作数很简单,练习一下打印路径;打印最短路劲就是每次记录当前状态和上一步,找到终点后查找路径。#include#include#includeusing namespace std;#define INF ...
分类:
其他好文 时间:
2015-04-18 14:20:17
阅读次数:
136
ACM Computer FactoryTime Limit:1000MSMemory Limit:65536KTotal Submissions:5689Accepted:1954Special JudgeDescriptionAs you know, all the computers used...
分类:
其他好文 时间:
2015-04-11 11:44:41
阅读次数:
209
广度优先算法:模拟队列:数据量较小,需要打印路径坐标STL队列:数据量较大,只需要打印步数迷宫问题Description定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0...
分类:
编程语言 时间:
2015-04-06 11:22:02
阅读次数:
148
题意 你有两个容积分别为a,b杯子 你每次可以将某个杯子中的水倒满或者倒掉或者倒到另一个杯子 问能否通过这两个杯子量出c容量的水
和上一个倒可乐问题类似 只是这个操作更多了点 将两个杯子中各含有的水作为状态 每出队列一个状态 将所有可能到达的状态入队 直到有一个杯子里面水的体积为c 打印路径直接递归就行了
#include
#include
#include
usin...
分类:
其他好文 时间:
2015-04-02 18:57:51
阅读次数:
173
就是简单的0-1背包问题,不过没有具体的效益值,隐含的效益值就是剩余背包的容量。因为要输出具体选择了那些track(也就是物品),所以采用序偶的方法。其实0-1背包的解画在坐标轴上就是一个分段函数,所谓序偶就是那些跃迁的节点。但是这道题略有不同,第0阶段的初始序偶不是(0,0),而是(0,N)。序偶的第一个参数表示容量,第二个参数表示背包的剩余容量。当由前一阶段的序偶得到新序偶,并且将两者合并的时...
分类:
其他好文 时间:
2015-02-08 21:54:47
阅读次数:
204
这场CF终于当了一次手速狗啊,简直了啊。
A:签到,输出一个蛇形,看着样例找到规律打印路径就可以了。
int main()
{
int n, m;
while(cin >>n>>m)
{
for(int i = 1; i <= n; i++)
{
if(i%2)
{
...
分类:
其他好文 时间:
2015-02-03 17:11:01
阅读次数:
141