A+B>=K(?????)

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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章