社区讨论
我是前人(WA On Sub0 #3)
P5621[DBOI2019] 德丽莎世界第一可爱参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mk3tw9lr
- 此快照首次捕获于
- 2026/01/07 17:41 上个月
- 此快照最后确认于
- 2026/01/10 16:30 上个月
首先 CDQ 要去重这个都知道吧。
起因是主包被 Sub0 #3 卡掉了,看到警示后人说还要按可爱值排序,不对啊这东西为什么也要排,反正加了就过了,这我就火大了,非得不排可爱值过一发。
排查之后发现问题其实在去重,主包是这么写的
C for (int i = 1; i <= n; i ++) {
if (a[i].a == a[i - 1].a && a[i].b == a[i - 1].b && a[i].c == a[i - 1].c && a[i].d == a[i - 1].d)
a[m].v += max(a[i].v, 0ll);
else {
a[++ m] = a[i];
a[m].id = m;
}
}
n = m;
这是最正常的写法,但遇到这组 hack:
CPP2
0 0 0 0 -2
0 0 0 0 4
就死了,死因是把 的与 的相加了。
MVP 结算画面:
C for (int i = 1, now = 0; i <= n; i ++) {
if (a[i].v < 0)
continue;
if (a[i].a == a[now].a && a[i].b == a[now].b
&& a[i].c == a[now].c && a[i].d == a[now].d)
a[m].v += a[i].v;
else {
a[++ m] = a[i];
a[m].id = m, now = i;
}
}
if (m == 0) {
for (int i = 1; i <= n; i ++)
ans = max(ans, a[i].v);
cout << ans;
return 0;
}
n = m;
回复
共 0 条回复,欢迎继续交流。
正在加载回复...