http://www.lydsy.com/JudgeOnline/problem.php?id=1027没special judge wa了一发好蛋疼...首先这题大概和黑书上的差不多...由于知道任意两种材料就能得到第三种材料的含量,所以可以忽略第三种含量...首先来看,如果有两种材料,那么能合成...
分类:
Web程序 时间:
2015-01-02 22:18:02
阅读次数:
221
最短路
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 34617 Accepted Submission(s): 15001
Problem Description
在每年的校赛里,所有进入决赛的同学都会获...
分类:
其他好文 时间:
2015-01-02 09:48:33
阅读次数:
219
#1089 : 最短路径·二:Floyd算法
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
万圣节的中午,小Hi和小Ho在吃过中饭之后,来到了一个新的鬼屋!
鬼屋中一共有N个地点,分别编号为1..N,这N个地点之间互相有一些道路连通,两个地点之间可能有多条道路连通,但是并不存在一条两端都是同一个地点的道路。
由于...
分类:
编程语言 时间:
2015-01-02 09:45:16
阅读次数:
314
题目链接题意:给n个数,要求这n个数字小的尽量放到前面,求一个最小的。给一个矩阵s[i][j]==1,表示位置 i 的数字可以和 位置 j 的数字交换。分析:刚开始用的是3个循环,每次都找一个能直接连接的最小的放到前面,过了小数据,快结束的时候被hack了。其实不应该这么做,因为还有间接相连提前交换...
分类:
其他好文 时间:
2015-01-01 01:30:26
阅读次数:
172
A:签到,从左往右走一遍判断下有没有遇到t即可
B:先利用floyd求出传递闭包,然后利用这个传递闭包贪心小的尽量往前放即可
C:贪心的策略,放的顺序其实根据拿的顺序就可以确定的,所以只要在拿的顺序上从左往右扫一遍即可
D:先DFS预处理出每条边两边点的个数,然后三元组对于每个边经过都是n - 2次,所以一个边都会被计算到n - 2 * 一边点 * 另一边点个数
...
分类:
其他好文 时间:
2014-12-31 22:50:01
阅读次数:
183
/**
?*?@brief?uva?11549
?*?@file?11549.cpp
?*?@author?mianma
?*?@created?2014/12/31?11:43
?*?@edited??2014/12/31?11:43
?*?@type?
?*?@note?floyd判圈算法
?*/
#include?<fstr...
分类:
其他好文 时间:
2014-12-31 14:42:15
阅读次数:
237
题目大意:给定一张无向图,求从s出发恰好经过n条边到达e的最短路
倍增Floyd……为何大家都管这个叫做矩阵乘法- - 算了为何要纠结这种事- -
令f[p][i][j]表示走2^p步从i到达j的最短路 有f[p][i][j]=min{f[p-1][i][k]+f[p-1][k][j]}
将n进行二进制拆分 用矩阵g记录答案矩阵 对于每一位p 用f[p]和g两个矩阵搞出h 再将h的值赋给g
...
分类:
其他好文 时间:
2014-12-30 09:16:28
阅读次数:
212
题目大意:求恰好走k步从S到T的最短路。
思路:设f[p][i][j]为从i到j恰好走2^p步的最短路,DP方程十分简单:f[p][i][j] = min(f[p][i][j],f[p - 1][i][k] + f[p - 1][k][j]);
对总步数T进行二进制拆分,在T有1的位置上,假如这个位置为p,那么就用f[p][][]来更新答案g[][],最后得到的g[][]就是答案矩阵。...
分类:
其他好文 时间:
2014-12-30 09:16:17
阅读次数:
184
Risk is a board game in which several opposing playersattempt to conquer the world. The gameboard consists of a world map broken upinto hypothetical countries. During a player's turn, armies stationed...
分类:
编程语言 时间:
2014-12-29 18:25:50
阅读次数:
316
这道题很容易想到状压dp,首先跑一遍floyd求出各个点之间的最短路,然后dp。
状态是dp[i][j]表示状态为i(二进制,表示是否访问过每个点),在位置j时的最短路。
转移就是:dp[i][j]=min(dp[i-(1<<v)][u]+grid[u][v],dp[i][j]),其中v是当前位置,u是上一个状态的位置。
需要注意的是dp的顺序应该是由含1的个数少的二进制到1的个数高的二进制;由于最开始就在0位置,所以dp[(1<<n)-1][0]不可能被转移到,所以最后的答案应该是ans=min(ans,...
分类:
其他好文 时间:
2014-12-26 20:22:01
阅读次数:
260