A 的取值範圍 [l1,r1], B 的取值範圍[l2,r2]。
問有多少種取值方案滿足A+B>=K。
時間複雜度O(1)
用對拍稍微驗證了一下代碼的正確性
ll nb(ll l1,ll r1,ll l2,ll r2,ll k) {
ll ans=0;
ll lll=k-r1;
ll rrr=k-l1;
if(lll>r2)return ans;
if(lll<l2&&rrr<l2) {
ans=ans+(r2-l2+1)*(rrr-lll+1);
return ans;
}
if(lll<l2) {
ans+=(r2-l2+1LL)*(l2-lll);
lll=l2;
}
ll a,b;
a=r2-lll+1;
b=r2-min(r2,rrr)+1;
ans=ans+(a-b+1)*(a+b)/2;
return ans;
}