gfoj 卡夫的菜

2021-08-31 07:40:05 字數 1419 閱讀 6703

題目:

有n盤菜,每盤菜都有乙個美味值。但是你只能選m盤菜。並且這些吃菜的順序能影響總美味值。如果i當且僅當在j之前吃,那麼會額外加一些美味值,這樣的組合有k組。求選m盤菜吃能獲得的最大的美味值。 

input

第一行為n,m,k

第二行n個整數ai(0<=ai<=10^9)代表每盤菜的美味值

接下來k行每行三個整數xi,yi,ci(1<=xi,yi<=n,xi!=yi,0<=ci<=10^9),代表在吃第yi盤菜前吃第xi盤菜會增加第yi盤菜ci的美味值,保證不會有相同的二元組(xi,yi)。

對於50%的資料,1<=n,m<=10

對於100%的資料,1<=n,m<=15

output

乙個整數輸出最大的美味值

sample input

樣例輸入1

2 2 1

1 12 1 1

樣例輸入2

4 3 2

1 2 3 4

2 1 5

3 4 2

sample output

樣例輸出1

3樣例輸出2

12

void dfs(int state,int pos,int tot)

dfs(state,pos+1,tot);

if (tot>0)

dfs(state+(1<<(pos-1)),pos+1,tot-1);

}int main()

**:

#include #include #include using namespace std;

const int maxs=15;

long long f[(1<<15)+5][maxs+5];

int a[maxs+5],c[maxs+5][maxs+5],s[800000+5];

int n,m,k1,tmp=0;

void dfs(int state,int pos,int tot)

dfs(state,pos+1,tot);

if (tot>0)

dfs(state+(1<<(pos-1)),pos+1,tot-1);

}int main()

for (i=1;i<=m;i++)

dfs(0,1,i);

for (i=1;i<=n;i++)

f[(1<<(i-1))][i]=a[i];

for (i=1;i<=tmp;i++)

}} long long ans=0;

for (i=1;i<=tmp;i++)

for (j=1;j<=n;j++)

ans=max(ans,f[s[i]][j]);

printf("%lld\n",ans);

return 0;

}

偷菜的革命

一 新一輪的網際網路革命即將爆發,它將深深影響全球的每一位網民!網際網路引入中國已有將近 15 年歷史,在這 15 年裡,中國網際網路經歷了 3 次重要的變革 網際網路的每一次變革,不僅會對所有的傳統行業帶來巨大的衝擊,而且還會對整個網際網路行業的存在方式和經濟形態產生重大的影響,更重要的是,它還深...

platform builder中的編譯選單

在wince5.0中,在 build os 選單中,我們會看到不同的編譯選項 sysgen build and sysgen 和 build and sysgen current bsp sysgen 不用多說,當你在 catalog 中新增或刪除了新的item的時候,就用這個吧。build and...

菜雞的自救之路

博主研二在讀,渾渾噩噩,一無所學。一朝面臨畢業求職,惶惶恐恐,雖無大志,但也不甘墮落。於是今日開啟菜雞的自我拯救之路,爭取通過數月乃至一年的努力,不求成為大神,起碼脫離菜雞稱號,等來年春招,在面臨殘酷的競爭時不至於任人宰割。首先明確需要點亮的技能樹都有哪些 畢業要緊,最理想的情況當然是在滿足科研專案...