度度熊有一張紙條和一把剪刀。
紙條上依次寫著 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 段按一定的順序重新拼起來。不同的剪和接的方案,可能會得到不同的結果。度度熊...