国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Codeforces Round 919 (Div. 2)(A-D)

這篇具有很好參考價值的文章主要介紹了Codeforces Round 919 (Div. 2)(A-D)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目地址:https://codeforces.com/contest/1920

Problems A. Satisfying Constraints

思路

題目給出若干約束,求符合要求的數(shù)字個數(shù)。

若為1,則大于等于該約束;若為2,則小于等于該約束;若為3,則不能等于該約束。

對于前兩種情況,統(tǒng)計最大左邊界和最小右邊界;對于第三種情況,存入數(shù)組中。然后統(tǒng)計在邊界內(nèi)的第三種情況的個數(shù),最后用邊界內(nèi)數(shù)字個數(shù)減去區(qū)間內(nèi)第三種情況的個數(shù)即可。

標(biāo)程

void Solved() {
    int n; cin >> n;
    int mx = INF, mi = 0;
    vector<int> a;
    for(int i = 0; i < n; i ++ ) {
        int x, y; cin >> x >> y;
        if(x == 1) {
            mi = max(mi, y);
        } else if(x == 2) {
            mx = min(mx, y);
        } else {
            a.push_back(y);
        }
    }
    int sum = 0;
    for(auto i : a) {
        if(i >= mi && i <= mx) sum ++;
    }
    int res = mx - mi + 1 - sum;
    
    cout << max(res, 0) << endl;
}

Problems B. Summation Game

思路

簡單博弈,因為每人只操作一次,Bob希望結(jié)果數(shù)組之和最小,Bob會將前 x x x大的數(shù)都變?yōu)樨?fù),那么我們就只需要考慮Alice需要刪除多少數(shù)字才能讓結(jié)果數(shù)組之和最大。那么我們只需枚舉 k k k次即可,對應(yīng)Alice刪除 0... k 0...k 0...k個數(shù)字,要使Bob取反后的數(shù)組之和最大,那么Alice刪除數(shù)字將會按照從大到小的順序。

標(biāo)程

#define int long long
void Solved() {
    int n, k, x; cin >> n >> k >> x;
    vector<int> a(n + 1), b(n + 1);
    int res = -INF;
 
    for(int i = 1; i <= n; i ++ ) cin >> a[i];
    sort(a.begin() + 1, a.end());
    for(int i = 1; i <= n; i ++ ) {
        b[i] = a[i] + b[i - 1];
    }
 
    for(int i = n; i >= n - k; i -- ) {
        int j = max(0ll, i - x);
        res = max(res, b[j] - (b[i] - b[j]));
    }
 
    cout << res << endl;
}

Problems C. Partitioning the Array

思路

本題是一道同余數(shù)論。給定長度為 n n n的數(shù)組 a a a,然后將數(shù)組均分為若干份,如果當(dāng)前分法可以找到每個子份對同一個數(shù)字取余后都相等,則分?jǐn)?shù)加一,問能加多少分?

  1. 同余: 兩個整數(shù) a 、 b a、b a、b,如果他們同時除以一個自然數(shù) m m m,所得的余數(shù)相同,則稱 a 、 b a、b a、b對于模 m m m同余,記作 a ≡ b ( m o d . m ) a≡b(mod.m) abmod.m
  2. 關(guān)于將數(shù)組均分為若干份,我們可以直接枚舉即可。
  3. 而判斷當(dāng)前所有組是否可以對同一個數(shù)字取余后相等,需要遍歷一遍數(shù)組。

標(biāo)程

void Solved() {
    int n; cin >> n;
    vector<int> a(n);

    for(auto &i : a) cin >> i;

    int res = 0;
    for(int i = 1; i <= n; i ++ ) {
        if(n % i == 0) {
            int g = 0;
            for(int j = i; j < n; j ++ ) {
                g = gcd(g, a[j] - a[j - i]);
            }
            res += (g != 1);
        }
    }
    
    cout << res << endl;   
}

Problems D. Array Repetition

思路

本題首先給出 n , q n,q n,q,然后給出 n n n次操作,每次操作有兩種:1. 在數(shù)組后面添上一個數(shù)字 x x x,2. 將已有數(shù)組復(fù)制到數(shù)組后面 x x x次。然后有 q q q次查詢,每次查詢要求輸出數(shù)組當(dāng)前元素的值。

由于數(shù)組長度將會非常大,因此我們不能考慮模擬。

  1. 我們可以記錄每次操作過后的數(shù)組長度。
  2. 每次查詢是直接查詢數(shù)組下標(biāo),因此我們可以找到第一個令數(shù)組長度大于該下標(biāo)的操作。
  3. 注意當(dāng)數(shù)據(jù)比較大時會爆 l o n g l o n g long long longlong,因此在讀入的時候要注意。
  4. 如果將所有數(shù)據(jù)(操作、當(dāng)前數(shù)組長度)一起存,然后二分查找,這樣會導(dǎo)致超時。

我們可以在讀入的時候記錄該次操作后的數(shù)組長度,然后記錄該操作的 x x x,用來最后輸出。每次查詢的時候找到對應(yīng)的操作,若是第二種操作,則將本次查詢的下標(biāo)對上一次操作的數(shù)組長度取模。最后必然找出的是第一次操作,輸出即可。文章來源地址http://www.zghlxwxcb.cn/news/detail-797266.html

標(biāo)程

void solve(){
    int n, q; cin >> n >> q;

    ll dp[n + 1] = {};
    int lstAdd[n + 1] = {};
    vector<int> pos;

    for (int i = 1, doAdd = true; i <= n; i++){
        int a, v; cin >> a >> v;

        if (a == 1) {
            lstAdd[i] = v;
            dp[i] = dp[i - 1] + 1;
        } else {
            lstAdd[i] = lstAdd[i - 1];
            dp[i] = ((v + 1) > 2e18 / dp[i - 1]) ? (ll)2e18 : dp[i - 1] * (v + 1);

            if (doAdd) pos.push_back(i);
        }
        if (dp[i] == 2e18) doAdd = false;
    }
    while (q--){
        ll k; cin >> k;

        for (int i = pos.size() - 1; i >= 0; i--){
            int idx = pos[i];

            if (dp[idx] > k && dp[idx - 1] < k){
                if (k % dp[idx - 1] == 0){
                    k = dp[idx - 1]; break;
                }
                k %= dp[idx - 1];
            }
        }
        cout << lstAdd[lower_bound(dp + 1, dp + n + 1, k) - dp]<<" \n"[q == 0];
    }
}

超時代碼(思路較直觀)

#define int long long
struct arr{int x, y, z;};
arr a[N];
int n, q, sum;
 
int find(int m) {//找第一個大于m的a[i].z
    int l = 1, r = n, mid;
    while(l < r) {
        mid = (l + r) / 2;
        if(a[mid].z < m) l = mid + 1;
        else r = mid;
    }
    return l;
}
 
void Solved() {
    cin >> n >> q;
    for(int i = 1; i <= n; i ++ ) {
        cin >> a[i].x >> a[i].y;
        if(a[i].x == 1) a[i].z = a[i - 1].z + 1;
        else {
            if((a[i].y > 2e18 / a[i - 1].z) && !sum){
                a[i].z = 2e18;
                sum = i;
            } else {
                a[i].z = a[i - 1].z * (a[i].y + 1);
            }
        }
    }
    while(q -- ) {
        int m; cin >> m;
        int t = find(m);
        while(a[t].x == 2) {
            m %= a[t - 1].z;
            if(m == 0) m = a[t - 1].z;
 
            t = find(m);
        }
        cout << a[t].y << " ";
    }
    cout << endl;
}

到了這里,關(guān)于Codeforces Round 919 (Div. 2)(A-D)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Codeforces Round 867 (Div. 3)

    從所有a[i]+i-1=t的選擇種取個max即可 實際上就是取同符號乘積的最大值 找規(guī)律,發(fā)現(xiàn)結(jié)果與邊長n的關(guān)系是:res = n * (n + 3) - (n - 2) ①當(dāng)n為奇數(shù)時,除了1其他均無解 ②當(dāng)n為偶數(shù)時,我們可以構(gòu)造一個形如n,1,n - 2,3,...的數(shù)列 首先我們可以發(fā)現(xiàn)n必定出現(xiàn)在起始位置。如果n不在起

    2024年02月02日
    瀏覽(20)
  • Codeforces Round 866 (Div. 2)

    給出一個僅由_或^組成的字符串,你可以在任意位置添加_或^字符,使得字符串滿足: 任意字符要么屬于^_^的一部分,要么屬于^^的一部分。求最少添加的字符數(shù)量。 對于_我們只需處理沒有組成^_^的_: ①如果_在首位置且左邊沒有^則添加^ ②如果_在尾位置且右邊沒有^則添加

    2023年04月25日
    瀏覽(17)
  • Codeforces Round 871 (Div. 4)

    Codeforces Round 871 (Div. 4)

    給定n個長度為10的字符串,問其與codeforces字符串的對應(yīng)下標(biāo)字母不同的個數(shù)。 對于每個字符串從前往后依次和“codeforces”對應(yīng)字符比較然后統(tǒng)計不同字母數(shù)即可 給定長度為n的數(shù)組,問連續(xù)相鄰為0的最大長度 維護(hù)一個全局最大長度res,和當(dāng)前連續(xù)序列的長度cnt。從前往后掃

    2024年02月03日
    瀏覽(16)
  • Codeforces Round 868 Div 2

    Codeforces Round 868 Div 2

    要求構(gòu)造一個僅包含 (1) 和 (-1) 的長度為 (n) 的數(shù)組 (a) ,使得存在 (k) 個下標(biāo)對 ((i, j), i j) 滿足 (a_i times a_j = 1) 。 當(dāng)有 (x) 個 (1) , (y) 個 (-1) 時,其滿足條件的下標(biāo)對數(shù)量為 (frac{x (x - 1)}{2} + frac{y (y - 1)}{2}) 。 由于 (n) 只有 (100) ,直接枚舉 (x) 即可。

    2024年02月01日
    瀏覽(40)
  • Codeforces Round 912 (Div. 2)

    大等于2依據(jù)冒泡排序即可排序,因此判斷下1即可 對每一個數(shù)字找哪一位肯定為0填0其他的填1 從后往前考慮加到當(dāng)前集合或新立一個集合 從最高位開始考慮能否為1,計算能否時每個數(shù)當(dāng)前位為1

    2024年02月04日
    瀏覽(18)
  • Codeforces Round 920 (Div. 3)

    Codeforces Round 920 (Div. 3)

    Codeforces Round 920 (Div. 3) 題意:隨機給出正方形在平面坐標(biāo)系上的四個頂點的坐標(biāo),求正方形的面積,正方形邊與xy軸平行。 思路:因為正方形與坐標(biāo)軸平行,所以找出相同的兩x或y坐標(biāo)即可找到一條邊的長度,平方就是面積,注意結(jié)果返回整型。 AC code: 題意:給出兩個01字符

    2024年01月17日
    瀏覽(66)
  • Codeforces Round 874 (Div. 3)

    Codeforces Round 874 (Div. 3)

    用最少的長度為2的字符串按一定規(guī)則拼出s。規(guī)則是:前一個字符串的尾與后一個字符串的首相同。 統(tǒng)計s中長度為2的不同字符串?dāng)?shù)量。 給定數(shù)組a[n]和b[n],重排b后,令任意|ai?bi|≤k成立(1≤k≤n)數(shù)據(jù)保證一定有解。 將a和b分別按從小到大的順序匹配便是最優(yōu)的,一定能滿足

    2024年02月05日
    瀏覽(22)
  • Codeforces Round 926 (Div. 2)

    類似于倍投法,就是在一賠一的情況下,第一次壓一塊錢,每輸一次就押注上一次兩倍的金額. 假如資金無限的話,這種方法贏的期望為無窮大.原理類似于二進(jìn)制,不論你輸再多次,只要贏一次總額就增加了1.比如 15 二進(jìn)制1111,前3把一直輸,但是只要第4把贏,就一定可以增加 1

    2024年02月20日
    瀏覽(16)
  • Codeforces Round 889 (Div. 2) 題解

    Codeforces Round 889 (Div. 2) 題解

    晚上睡不著就來總結(jié)一下叭~(OoO) 終榜?。?! 先不放圖了。。怕被dalaoHack...嗚嗚嗚~ ????????7.29半夜比賽,本來是不想打的,感覺最近做的題太多了,什么牛客杭電以及CF上的題等等等,挺雜的,也來不及整理,本想梳理一下,而且也感覺今天狀態(tài)不太好,但見他們都要

    2024年02月15日
    瀏覽(19)
  • Codeforces Round 858 (Div. 2)題解

    目錄 A. Walking Master(貪心) 題面翻譯 思路: 代碼實現(xiàn)? B. Mex Master(貪心) 題面翻譯: 思路: 代碼實現(xiàn) C. Sequence Master(數(shù)學(xué)) 題面翻譯: 思路: 代碼實現(xiàn) YunQian is standing on an infinite plane with the Cartesian coordinate system on it. In one move, she can move to the diagonally adjacent point on the

    2023年04月08日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包