悬赏一个关注,整体二分求调

P3527 [POI2011] MET-Meteors

@[我叫啥名字](/user/511271) 当 $tp1,tp2$ 为 $0$ 时会有 $x>y$ 的情况。
by Daidly @ 2022-12-16 21:51:45


@[我叫啥名字](/user/511271) 试试在 `solve()` 最前面加上 `if(x>y)return;`
by Daidly @ 2022-12-16 21:52:27


@[我叫啥名字](/user/511271) 用这方法时间复杂度会爆 加个特断就可以了 100分记录:https://www.luogu.com.cn/record/97448703
by jmh_AK_IOI @ 2022-12-16 22:00:51


@[Daidly](/user/271736) 不行啊,样例还是过不去
by ダ月 @ 2022-12-16 22:02:48


@[jiamh666](/user/774700) 请问加一个什么样的特判
by ダ月 @ 2022-12-16 22:04:40


@[我叫啥名字](/user/511271) 我觉得你的 query 那一点有点奇怪,为什么是直接询问 $x$ 和 $x+m$ 之间的区间和啊,为什么不是两个点之和啊? 另外: - 这题用线段树很可能被卡一个点 - 统计答案时会爆 long long,可以中途退出或 `__int128`
by Daidly @ 2022-12-16 22:18:56


@[我叫啥名字](/user/511271) 当cnt1=0时,会出现s>t的情况要特判 solve(mid+1,r,s+cnt1,t); 当cnt2=t-s+1时,会出现s>t的情况要特判 solve(mid+1,r,s+cnt1,t); for(int i=s;i<=t;++i){ int sum=0; for(int j:S[p[i].id]){ sum+=query(j); if(sum>=p[i].need)break;//特判不然会爆ll } if(sum>=p[i].need)p1[++cnt1]=p[i]; else p[i].need-=sum,p2[++cnt2]=p[i]; }
by jmh_AK_IOI @ 2022-12-16 22:23:26


|