Gravatar
FoolMike
积分:5198
提交:1168 / 2244
Pascal同学请注意,当进行乘法运算时,得出的积会暂时存储在第一个出现的变量当中!所以有可能会爆215(值溢出)!所以先用一个能存的下的数做第一个是十分重要的- -

Gravatar
HouJikan
积分:1854
提交:596 / 1973
尼玛如果dist[i][k]+dist[k][j]==dist[i][j],那么way[i][j]要变成way[i][k]*way[k][j]
之前一直直接变成1了。。
WA无数遍,还是不够熟悉啊

Gravatar
FoolMike
积分:5198
提交:1168 / 2244
回复 @舍得 :
把倒数第四行的“n-1”改成“l-1“,把y数组的范围开到1..500000,把c改成int64,应该就会好了

Gravatar
FoolMike
积分:5198
提交:1168 / 2244
手残党刷了一个夏天才刷完- -

Gravatar
cstdio
积分:4745
提交:1198 / 2108
我来组成分块……

Gravatar
HouJikan
积分:1854
提交:596 / 1973
单调队列= =一开始加入写错了
设当前正在处理第K位,则向单调队列中加入f[i-l],并删除单调队列中在i-r之前的数字
好像只能分析K点从哪里来,不能用从哪个点可以到K
即只能用f[k]=Max{f[k-i]+cold[k]}i∈[l,r]
反正做对了~\(≧▽≦)/~

Gravatar
Ezio
积分:1009
提交:442 / 1005

Gravatar
cstdio
积分:4745
提交:1198 / 2108
貌似裸判断的实际复杂度比O(mn)好的多得多……

Gravatar
raywzy
积分:712
提交:238 / 509
区间贪心

Gravatar
Ezio
积分:1009
提交:442 / 1005
为了艾尔

Gravatar
任杰
积分:282
提交:105 / 345
最简单的方法,预处理成01背包

Gravatar
任杰
积分:282
提交:105 / 345
BFS+dp

Gravatar
任杰
积分:282
提交:105 / 345
拓扑排序版

Gravatar
任杰
积分:282
提交:105 / 345
先用Floyd找到直径,由于这是一棵无根树,树中两点最短距离最大的就是直径的两个端点
或者从任意点v为根找到v点距离最大的点u
然后以u为直径的一个端点找距离u最大的点f为直径的另一个端点
然后就是枚举路径长度取最小值

Gravatar
Ezoi_XY
积分:1124
提交:390 / 775
@2297
其实二分就好了- -

Gravatar
sqyon
积分:455
提交:131 / 230
开几个数组记录,O(n)扫描一下,注意对正在处理的区间的操作

Gravatar
任杰
积分:282
提交:105 / 345
线性匹配使用O(n)的算法

Gravatar
任杰
积分:282
提交:105 / 345
迭代实现+打表

Gravatar
rpCardinal
积分:752
提交:268 / 711
单调队列搞定。。。代码55行,好像还是太长了

Gravatar
rpCardinal
积分:752
提交:268 / 711
要么优先队列O(nlogn)过,要么计数排序然后直接用单调队列O(n)过,要么开O2暴力O(n^2)卡过,那些手写堆的大爷都是什么心态。。。