Straight Master Gym-101775J (差分)

題目來源 Straight Master

題意

有n種撲克牌,每種撲克牌有ai張,每次可以打出3到5張連續(xù)的牌作為順子,問這副牌能不能用順子全打出來

思路

換一個思路,給定一個長度為0的序列,每次可以選擇長度為3,4,5的區(qū)間并將這個區(qū)間內(nèi)的數(shù)全部加一,最終可以得到一個新的序列,問這個序列的每個數(shù)分別是多少,這個序列就是給定的n種撲克牌。

對于這個問題,可以用差分的思想,對于區(qū)間[L, R],可以開一個新的數(shù)組b,這個區(qū)間加一后可以認(rèn)為是b[L]+=1, b[R+1]-=1, b的前綴和即為對應(yīng)的數(shù)字。

原來那個問題就可以轉(zhuǎn)化為給你一個序列,問這個序列可不可以由上面的操作得到。也可以構(gòu)建一個差分?jǐn)?shù)組b,其中b[i] = a[i]-a[i-1]。如果這個b數(shù)組對于每個相鄰距離大于等于3的b[i] 和 b[j] (j>=i+3),如果每一對的和加起來等于0,則給定的數(shù)列是可以得到的,否則就無法得到。

代碼

#include <bits/stdc++.h>
using namespace std;
int n, a[200005], b[200005];
int main()
{
    int t;
    scanf("%d", &t);
    for (int cas = 1; cas <= t; ++cas)
    {
        memset(a, 0, sizeof(a));
        memset(b, 0, sizeof(b));

        scanf("%d", &n);
        for (int i = 0; i < n; ++i) scanf("%d", a + i);

        b[0] = a[0];
        for (int i = 1; i < n; ++i) b[i] = a[i] - a[i - 1];
        b[n] = -a[n - 1];

        bool ok = true;
        if (b[0] < 0 || b[1] < 0 || b[2] < 0)   ok = false;
        else
        {
            long long sum = 0;
            for (int i = 0; i <= n; ++i)
            {
                if (b[i] > 0)   sum += b[i];
                int p = i + 3;
                if (p > n)  break;
                if (b[p] < 0)
                {
                    sum += b[p];
                    b[p] = 0;
                }
                if (sum < 0)    break;
            }
            if (sum != 0)   ok = false;
        }
        printf("Case #%d: %s\n", cas, ok ? "Yes" : "No");
    }
    return 0;
}

這個題真的是。。。輸出格式弄錯了wa了好幾發(fā),然后判斷前綴和滿不滿足條件的時候?qū)懙搅嘶ɡㄌ柪?。。。智障。。?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 2. 實現(xiàn) Singleton 3. 數(shù)組中重復(fù)的數(shù)字 4. 二維數(shù)組中的查找 5. 替換空格 6. 從尾到...
    Observer_____閱讀 3,180評論 0 1
  • 說說自己,外強(qiáng)中干,我不是一個自信的人,因為自身成長的因素,我從沒有一個人出過遠(yuǎn)門,更別提自己帶孩子出去旅游了!機(jī)...
    醬醬soga閱讀 315評論 0 0
  • Plotly,一個用于做分析和可視化的在線平臺,曾被網(wǎng)友稱為“有史以來最牛逼”可視化神器(具體無從考據(jù),只是在搜索...
    博觀厚積閱讀 15,525評論 1 73
  • 床上充滿陽光的味道 心里堆滿思念的語句 想你!沒有告訴你!
    左手與右手閱讀 280評論 0 0
  • 我獨自走在川流不息的街道 目睹行色匆匆的人 但是只看見一個 不禁笑著 仰視蔚藍(lán)的天空 俯視城市的倒影 毫無目的的踱...
    Lonelyran閱讀 251評論 0 2

友情鏈接更多精彩內(nèi)容