fix(P4087): 修复奶牛计数逻辑错误

修正判断条件,确保在奶牛数量变化时正确计算答案。移除冗余变量just_one_was_max,使用wasmaxcnt和ismaxcnt更精确地跟踪数量变化。
This commit is contained in:
Zengtudor 2025-10-21 16:44:48 +08:00
parent 9b0d719c15
commit dd8d4cb398

View File

@ -32,10 +32,9 @@ int main() {
for (ll i = 1; i <= n; i++) { for (ll i = 1; i <= n; i++) {
ll max_num_before = num_cowcount.rbegin()->first; ll max_num_before = num_cowcount.rbegin()->first;
bool just_one_was_max = num_cowcount.rbegin()->second==1;
ll old_cownum = cow_num[c[i].c]; ll old_cownum = cow_num[c[i].c];
ll wasmaxcnt = num_cowcount[old_cownum];
bool was_top = (old_cownum == max_num_before); bool was_top = (old_cownum == max_num_before);
num_cowcount[old_cownum]--; num_cowcount[old_cownum]--;
@ -47,12 +46,12 @@ int main() {
cow_num[c[i].c] = new_cownum; cow_num[c[i].c] = new_cownum;
num_cowcount[new_cownum]++; num_cowcount[new_cownum]++;
ll ismaxcnt = num_cowcount[new_cownum];
ll max_num_after = num_cowcount.rbegin()->first; ll max_num_after = num_cowcount.rbegin()->first;
bool is_top = (new_cownum == max_num_after); bool is_top = (new_cownum == max_num_after);
if ((max_num_before != max_num_after && !just_one_was_max) || (was_top != is_top)) { if ((was_top != is_top)||(was_top&is_top && wasmaxcnt!=ismaxcnt)) {
ans++; ans++;
} }
} }