呜呜呜
昨晚开出了 C2(hardversion),当时 rank 前一千,表现分 1947,要上大分。
但是早上一看掉大分,wrong answer on test 4,一看代码输出,怎么输出了 8 个亿???
原因在于:
printf("%lld\n", v.size());
32 位下这无符号整型变量转 long long 输出不知道为什么就变 8 个亿了,换 64 位就没问题。
呜呜呜掉大分
C2. Dual (Hard Version)
做法
分类讨论,因为这个 31 的限制太严格了,要精准使用每次操作。
首先,只有正数和负数很简单,从前往后加一次,或者从后往前加一次就完事了。
这样只用花费 19 次。
麻烦在于有正有负。(0不用管,可以放在最后处理)
最麻烦的情况也就不外乎这两种类似:
1、13 个 1,7 个 -20
1 花费 5 次变成 32,然后用 32 把 −20 全变成正数。
这时候一共花费 5+7=12 次操作。就变成了上面的全正数。
2、12 个 1,8 个 -20
这时候用 −20 把 1 全变成负数。就变成了上面的全负数情况。
一共花费 12 次操作。
所以最多 12+19=31 次。
昨晚打出c2然后又去交了一次c1,没想到是按最后一次交的来算分的,直接掉了300名左右
cf 是这样的