百度之星初賽C hdu 6376 度度熊剪紙條

2021-08-22 17:50:42 字數 1054 閱讀 7862

度度熊有一張紙條和一把剪刀。

紙條上依次寫著 n 個數字,數字只可能是 0 或者 1。

度度熊想在紙條上剪 k 刀(每一刀只能剪在數字和數字之間),這樣就形成了 k+1 段。

他再把這 k+1 段按一定的順序重新拼起來。

不同的剪和接的方案,可能會得到不同的結果。

度度熊好奇的是,字首 1 的數量最多能是多少。

考場的時候,有點緊張。。想複雜了

很明顯,一段1要2次,頭的1次,尾的1次

有一種特殊情況,就是拼接在最後的也只用1次

容易想揹包。。

但是我「就是拼接在最後的也只用1次」想複雜了,以為有什麼特殊情況

今早冷靜分析了一下,其實就等價於k+

+ k++

然後就是簡單揹包了

code:

#include

#include

#include

#include

using namespace std;

const int n=100005;

const int k=10005;

char ss[n];

int len;

int n,k;

struct qq

; qq (int _cost,int _val)

}s[n];int tot=0;

int f[k];

int main()

if (ss[u]=='1')

}if (tf==true)

if (k==0)

k++;

for (int u=0;u<=k;u++) f[u]=0;

for (int u=1;u<=tot;u++)

for (int i=k;i>=0;i--)

if (i>=s[u].cost)

f[i]=max(f[i],f[i-s[u].cost]+s[u].val);

printf("%d\n",f[k]);

}return

0;}

百度之星 初賽B

a 傳送門 點我 求聯通塊個數,對於簡單圖而言,就是c v e,其中c就是聯通塊個數,v是頂點數,e是邊數 include include include include using namespace std const int max n 2e5 10 int n,m,k vectorg max...

百度之星2017初賽題解(A)

t1 簡單數論,問滿足 a0 a1 b an b n a0 a1 an mod p 的p的個數 即滿足p b 1 a1 b 2 1 a2 b 3 1 a3 即p b 1的p的個數 sqrt b 1 暴力列舉b 1約數即可 t2 現在給若干個條件,xi xj或xi xj,要你將它們劃分成若干組,滿足每...

2018百度之星初賽1003

problem description 度度熊有一張紙條和一把剪刀。紙條上依次寫著 n 個數字,數字只可能是 0 或者 1。度度熊想在紙條上剪 k 刀 每一刀只能剪在數字和數字之間 這樣就形成了 k 1 段。他再把這 k 1 段按一定的順序重新拼起來。不同的剪和接的方案,可能會得到不同的結果。度度熊...