疑惑 关于开long long了仍然70的解决
  • 板块P3406 海底高铁
  • 楼主Lineng
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/12/11 15:11
  • 上次更新2023/11/3 22:29:32
查看原帖
疑惑 关于开long long了仍然70的解决
540379
Lineng楼主2021/12/11 15:11

我在最后求和的时候采用了如下比较的方法

for (int i = 0; i < m - 1; i++)
    {
        int next = a[i + 1];
        ans += a[i] > a[i + 1] ? sum[a[i] - 1] - sum[a[i + 1] - 1] : sum[a[i + 1] - 1] - sum[a[i] - 1];
    }

不知道是不是在这种比较大小里

ans = a > b ? sum[a]-sum[b] : sum[b]-sum[a] 

对于返回给ans的(sum[a] - sum[b])并没有用long long返回所以就出错了

如果改成

for (ll i = 0; i < m - 1; i++)
    {
        ll next = a[i + 1];
        if (a[i] > a[i + 1])
            ans += sum[a[i] - 1] - sum[a[i + 1] - 1];
        else
            ans += sum[a[i + 1] - 1] - sum[a[i] - 1];
    }

就对了 或者在前面加ll也能对

for (ll i = 0; i < m - 1; i++)
    {
        ll next = a[i + 1];
        ans += a[i] > a[i + 1] ? (ll)sum[a[i] - 1] - (ll)sum[a[i + 1] - 1] : (ll)sum[a[i + 1] - 1] - (ll)sum[a[i] - 1];
    }

同理 max和min函数应该也要这样做

2021/12/11 15:11
加载中...