/ Vijos / 讨论 / 问答 /

关于maxlongint

vijos是不是不能用Maxlongint编程?我文化之旅交了n多次用Maxlongint全部wa 换成100000就AC了。。。耗了我半上午

8 条评论

  • @ 2014-10-31 21:54:38

    nice我橙名了

  • @ 2014-10-30 22:03:17

    王若松建议我们用1000000000
    我一直这么办

  • @ 2014-10-30 20:38:00

    今天vijos怎么这么不稳定呢? 有时候会突然断线上不去。

    • @ 2014-10-31 00:01:01

      服务器不乖

    • @ 2014-10-31 00:48:35

      给您带来的不便请谅解QAQ 感谢您对Vijos的支持! 祝您刷题愉快!

    • @ 2014-10-31 07:06:20

      就是就是,这几天都这样,都是晚上的时候要么无法加载要么主页打开7秒多

  • @ 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