Nowcodercontest5278H 紙牌遊戲

2022-05-20 05:09:34 字數 1194 閱讀 8609

可以合理地想到從高到低依次列舉每一位的數,然後\(\text\)一下後面是否存在方案,問題在於如何快速check

設還還剩下的\(\mod 3=0,1,2\)的數個數分別為\(c[0..2]\)

設總共還需要\(n\)個,需要湊出\(\mod 3=t\)的方案

這時後我們假設列舉某乙個,比如我們列舉\(0\)選了\(i\)個,設還剩下\(n-i\)個要選,設剩下兩個選了\(y,x\)個,則有限制條件

\[x+y=n-i

\]\[2x+y = t \ (\mod 3)

\]把\(x\)帶掉,得到

\[2n-2i-2y+y=t (\mod 3)

\]\[y=2n-2i-t (\mod 3)

\]我們可以根據各種限制條件解出\(y\)的可行區間,然後判斷區間內是否存在乙個\(y\)即可

同時我們可以發現,隨\(i\)的增大,\(y\)的可行範圍也會增大,所以可以直接列舉最大的3個\(i\)就能完成check

#include#include#include#include#include#include#include#includeusing namespace std;

#define reg register

typedef long long ll;

#define rep(i,a,b) for(reg int i=a,i##end=b;i<=i##end;++i)

#define drep(i,a,b) for(reg int i=a,i##end=b;i>=i##end;--i)

#define pb push_back

template inline void cmin(t &a,t b)

template inline void cmax(t &a,t b)

const int n=1e5+10;

int n,m;

char s[n],ans[n];

int cnt[10],c[3];

int check(int n,int t)

return 0;

}int main()

cnt[j]++;

}if(!ans[i] || (i==1 && m>1 && ans[i]=='0') )

} ans[m+1]=0;

puts(!fl?"-1":ans+1);

}}

Nowcodercontest5278G血壓遊戲

做法非常多。比如對於同一層的點直接建立虛樹,然後模擬dp即可 如果不想建虛樹,可以直接維護合併,每次合併得到的 text 一定是同層點按照dfs序排序之後相鄰兩點的 text 之一 處理出所有這樣的lca,然後按照dep從大到小依次操作 用乙個set維護,每次取出子樹區間裡的點合併上來即可。不知道 ...

mysql5 2使用 5 2 使用MySQL資料庫

目前internet上流行的 構架方式是lamp,其中的m即mysql,作為資料庫,mysql以免費 開源 使用方便為優勢成為了很多web開發的後端資料庫儲存引擎。mysql驅動 go中支援mysql的驅動目前比較多,有如下幾種,有些是支援database sql標準,而有些是採用了自己的實現介面,...

mysql5 2使用 5 2 使用MySQL資料庫

目前internet上流行的 構架方式是lamp,其中的m即mysql,作為資料庫,mysql以免費 開源 使用方便為優勢成為了很多web開發的後端資料庫儲存引擎。mysql驅動 go中支援mysql的驅動目前比較多,有如下幾種,有些是支援database sql標準,而有些是採用了自己的實現介面,...