求来回最短路加起来最长的一条。
两次SPFA,然后选某个点的来回最长。(有向图)
Dijkstra+邻接矩阵 比较方便建立 反向图。
我用SPFA+2个邻接表(正图+反图),C++ 32ms。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-07-03 16:01:33
阅读次数:
173
假设初始状态为
a:2 3 1 5 4 6
则目标状态为
b:1 2 3 4 5 6且下标为初始状态中的3 1 2 4 5 6(a[3],a[1]...)
将置换群写成循环的形式
(2,3,1),(5,4),6就不用移动了。
移动方式2种
1:选循环内最小的数和其他len-1个数交换
2:选整个序列最小的数和循环内最小的数交换,转到1,再换回来。
#include
#inclu...
分类:
其他好文 时间:
2014-07-01 15:50:03
阅读次数:
243
「Poetize3」Heaven Cow与God BullFrom wwwwodddd背景 Background__int64ago,there'saheavencowcalledsjy...Agodbullnamedwzcfellinlovewithher...AsanOI&MOer,wzcgav...
分类:
其他好文 时间:
2014-06-30 14:04:00
阅读次数:
230
题目描述:
给你一个数字序列(每个数字唯一),每次你可以交换任意两个数字,代价为这两个数字的和,问最少用多少代价能把这个序列按升序排列好。
题目的具体做法是参考刘汝佳的《算法艺术与信息学奥赛》大概思路是:以后再用别种方法解,
1.找出初始状态和目标状态。明显,目标状态就是排序后的状态。
2.画出置换群,在里面找循环。例如,数字是8 4 5 3 2 7
明显, ...
分类:
其他好文 时间:
2014-06-28 08:07:33
阅读次数:
183
题意:N,T,S,E:给你T条边,每条边两端都有编号和权值,问从S走到E允许走N条边,求最短路。
foyld加矩阵快速幂思想。
注意要把边离散
#include
#include
#include
#include
using namespace std;
#define M 303
#define inf 0x3fffffff
struct node
{
...
分类:
其他好文 时间:
2014-06-27 07:39:23
阅读次数:
178
题目POJ 3617 和 这道题题目一样,只是范围稍稍再小一点。//模拟试试#include#include#includeusing namespace std;char s[30010][2];bool bijiao(int st,int ed){ if(st==ed) re...
分类:
其他好文 时间:
2014-06-26 16:00:00
阅读次数:
201
题解
题目要求是,有两种操作,从头取出一个字符,或者从尾取出一个字符,加到一个新的字符串末端,然后保证这个字符串是所有可能生成的字符串中,字典序排列最小的那个。依旧是贪心的想法,谁小我取谁即可。特殊判断两者相同的。一旦两者相同,那么就接着判断下一种,直到找到更小的为止。
另外需要注意两点,题目的输入很变态,要一个字母一行的输入,所以用cin或者用scanf(" %c", &ch)。cin不多说了,除了慢点其他没啥缺点。scanf中为何要加上一个空格呢?因为在格式串中,空格的意思是匹配输入中的所有换行、TAB...
分类:
其他好文 时间:
2014-06-25 08:46:12
阅读次数:
243