- 问答
- 2014-10-30 10:59:49 @
vijos是不是不能用Maxlongint编程?我文化之旅交了n多次用Maxlongint全部wa 换成100000就AC了。。。耗了我半上午
8 条评论
-
bobpanda LV 8 @ 2014-10-31 21:54:38
nice我橙名了
-
2014-10-30 22:03:17@
王若松建议我们用1000000000
我一直这么办 -
2014-10-30 20:38:00@
今天vijos怎么这么不稳定呢? 有时候会突然断线上不去。
-
2014-10-30 20:24:46@
谢谢大家的回复 我已经确定问题是maxlongint加法在32位机上越界了
-
2014-10-30 20:12:45@
不建议用Maxlongint,因为这玩意参与运算的时候很容易溢出。
-
2014-10-30 19:37:36@
原因是加法越界
for a := 1 to n do
for i := 1 to n do
for j := 1 to n do
if refuse[culture[j], culture[i]] = 0 then
begin
if (G[i, a] = maxlongint) and (G[a,j] = maxlongint) then begin writeln(16); halt(0); end;
if G[i, a] + G[a, j] < G[i, j] then
G[i, j] := G[i, a] + G[a, j];
end;
我测试了你的代码。 比较语句if G[i, a] + G[a, j] < G[i, j] then ... end;
是要执行一次加法运算的, 运行代码确认至少做过一次maxlongint + maxlongint的运算。诡异现象原因
你本地机器运行环境是**64位**系统,可否推测vijos的评测机是**32位**系统?结论
慎用maxlongint。 程序设计时应估计运算边界,设定恰当的极值表示, 如:const MaxValue = 100000;
-
2014-10-30 17:56:38@
哦还真有可能我看看
-
2014-10-30 17:45:44@
你算最短路时看看有没有可能是两条长度为maxlongint的边相加,这样就报错了,多半可能是这个
maxlongint是无辜的= =
- 1