欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

十三屆河南省賽C-Alice and Bob(尺取、前綴和、二分)

Alice and Bob

https://ac.nowcoder.com/acm/contest/17148/C

C-Alice and Bob

題目大意:

m次詢問,每次詢問一個(gè)區(qū)間中有多少個(gè)連續(xù)的的子區(qū)間不同數(shù)的個(gè)數(shù)大于等于k
強(qiáng)制在線

思路:

首先考慮樸素做法
假設(shè)i作為左端點(diǎn)時(shí)向右擴(kuò)展到f[i]這個(gè)區(qū)間有k個(gè)數(shù)字
枚舉區(qū)間[L,R]內(nèi) 的所有的數(shù)字作為左端點(diǎn)
對(duì)于[L,R]內(nèi)的一個(gè)點(diǎn)t,

  1. f[t]<=R,那么t作為左端點(diǎn)的貢獻(xiàn)是(R - f[t] + 1)
  2. f[t]>R,那么t作為左端點(diǎn)的貢獻(xiàn)是 0

由于f數(shù)組是不遞減的,我們可以在[L,R]中二分一個(gè)位置pos
如果pos作為左端點(diǎn)的貢獻(xiàn)是0,那么[pos,R]的所有貢獻(xiàn)都是0
對(duì)于有貢獻(xiàn)的部分可以用公式
圖片說明
這部分可以用前綴和公式O(1)求
f數(shù)組和以尺取O(n)求

Code

ll n, a[maxn], m, k, kind;
map<ll, ll> mp;
ll f[maxn], s[maxn];
void add(ll x) {
    mp[a[x]]++;
    if (mp[a[x]] == 1)
        kind++;
}
void del(ll x) {
    mp[a[x]]--;
    if (mp[a[x]] == 0)
        kind--;
}
int main() {
    // ios::sync_with_stdio(false);
    n = read(), m = read(), k = read();
    rep(i, 1, n) a[i] = read();
    int R = 1, L = 1;
    for (L = 1; L <= n; L++) {
        while (kind < k && R <= n)
            add(R), R++;
        if (kind == k)
            f[L] = R - 1;
        else
            f[L] = n + 1;
        del(L);
    }
    rep(i, 1, n) s[i] = s[i - 1] + f[i];
    ll ans = 0;
    while (m--) {
        ll l, r, l1, r1;
        l1 = read(), r1 = read();
        l = min(l1 ^ ans, r1 ^ ans) + 1;
        r = max(l1 ^ ans, r1 ^ ans) + 1;

        int L = 1, R = n, pos;
        while (L <= R) {
            int mid = (L + R) >> 1;
            if (f[mid] > r)
                pos = mid, R = mid - 1;
            else
                L = mid + 1;
        }
        pos--;
        if(pos<l) puts("0"),ans = 0;
        else {
            ll s1 =0 , s2 =0 ;
            s2 = (r+1)*(pos-l+1);
            s1 = s[pos] - s[l-1];
            printf("%lld\n",s2 - s1),ans =  s2 - s1;
        }

    }

    return 0;
}
全部評(píng)論
逮到
點(diǎn)贊 回復(fù) 分享
發(fā)布于 2021-06-01 18:54

相關(guān)推薦

05-07 13:29
已編輯
門頭溝學(xué)院 Java
北斗導(dǎo)航Compass低仿版:能不能先搞清楚優(yōu)先級(jí)啊,怎么可能是項(xiàng)目問題,項(xiàng)目很重要嗎?又沒學(xué)歷 又沒實(shí)習(xí)大廠憑啥約面?那玩具項(xiàng)目 沒應(yīng)用在真實(shí)生產(chǎn)環(huán)境下的 就算做上天又有什么用?早點(diǎn)找個(gè)小公司實(shí)習(xí) 拿小公司實(shí)習(xí)去投大廠實(shí)習(xí),這才是你現(xiàn)在該做的
投遞美團(tuán)等公司10個(gè)崗位 簡(jiǎn)歷被掛麻了,求建議
點(diǎn)贊 評(píng)論 收藏
分享
評(píng)論
5
收藏
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
??推髽I(yè)服務(wù)