社区讨论
98pts, WA#8 求助
B3903[NICA #3] 星空(Hard Version)参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mlnvxawm
- 此快照首次捕获于
- 2026/02/15 23:13 4 天前
- 此快照最后确认于
- 2026/02/16 20:04 3 天前
rt。
本人已经ac 调了2个小时代码,#8仍然过不了。经过逼问ai之后发现代码中这段有问题:
CPP本人已经ac 调了2个小时代码,#8仍然过不了。经过逼问ai之后发现代码中这段有问题:
if(black>white+1){
cout<<0;
return 0;
}
if(grey==0){
cout<<P(white,white)*P(white+1,black)%mod;
return 0;
}
ull ans1=P(white,white)*P(white+1,black)%mod;
assert(white-black>=0);
ull ans2=fac[white+grey-black]*invfac[white-black]%mod;
cout<<ans1*ans2%mod;
(关于
black white grey 是什么,请见第一篇题解,我因为没思路看了他的思路)ans2 想算的就是题解中公式的后半部分。然后意识到
white-black 有可能是-1,这么做就会导致 RE(然而没有segmentation fault,而是以wa出现,这很有迷惑性)于是改成了最基础的for循环求和,然后过了。
但是题解代码为什么能过??
但是题解代码为什么能过??
附上题解代码相关片段:
CPPif(k1>k3+1) cout << 0;
else if(k2 == 0) cout << 1ll * jc[k3] * jc[k3+1] % mod * inv[k3+1-k1] % mod;
else cout << 1ll * jc[k3] * jc[k3+1] % mod * inv[k3+1-k1] % mod * jc[k3-k1+k2] % mod * inv[k3-k1] % mod;
其中k1=black, k2=grey, k3=white。
也出现了
inv[k3-k1] 的情况,照理说也应该过不了#8,但是我试了一下是可以过的。
这不公平诶(求各位大神帮一下这个蒟蒻qwq 谢谢!!
回复
共 6 条回复,欢迎继续交流。
正在加载回复...