2023年8月15日提高組T2 購買

2021-08-07 01:57:15 字數 1130 閱讀 5716

description

bpm想要購買m種物品,每種物品只用購買一件。現在一共有n家商店,但走到第i家商店的路費為d[i],而在第i家商店購買第j種物品的花費為c[i,j]。問你最少需要花費多少錢。

input

第一行包含兩個正整數n,m,表示商店數和物品數。

接下來n行,每行先是乙個正整數d[i],表示到第i家商店的路費。接下來m個正整數,依次表示c[i,j]。

output

一行乙個整數,表示最小花費。

sample input

3 4

5 7 3 7 9

2 1 20 3 2

8 1 20 1 1

sample output

16 hint

對於前30%的資料,1<=n,m<=7

對於前100%的資料,1<=n<=100,1<=m<=16,d[i],c[i,j]<=1000000

做法:從m的範圍可以看出這是乙個狀態壓縮dp

**如下:

#include 

#include

#include

#include

using

namespace

std;

#define min(x, y) (x) < (y) ? (x) : (y)

int f[107][70000],d[107],cost[107][17],n,m;

inline

int read()

while (ch>='0'&&ch<='9')

return x*p;

}int main()

for (int i=0;i<=n;i++)

for (int j=0;j<=(1

<< m)-1;j++)

f[i][j]=0x7f7f7f7f;

f[0][0]=0;

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

for (int j=0;j<=(1

<< m)-1;j++)

f[i][j]=min(f[i-1][j],f[i][j]);

}cout

<1

<< m)-1];

}

2023年8月15日提高組T2 購買

bpm想要購買m種物品,每種物品只用購買一件。現在一共有n家商店,但走到第i家商店的路費為d i 而在第i家商店購買第j種物品的花費為c i,j 問你最少需要花費多少錢。第一行包含兩個正整數n,m,表示商店數和物品數。接下來n行,每行先是乙個正整數d i 表示到第i家商店的路費。接下來m個正整數,依...

2023年8月9日提高組T2 覆蓋

現在小b拿到了一條長度為n的木塊,初始時上面什麼顏色都沒有。為了美觀,現在小b希望把它的n個單位長度分別塗上紅 綠 藍三種顏色,每種顏色可以用乙個大寫字母表示,分別是 rgb。作為乙個不合格的油漆工,每次你可以把一段連續的木版塗成隨意一種顏色,但是你發現,後塗的顏色會覆蓋先塗的顏色。為了方便,請你用...

2023年8月8日提高組T2 呀!回文串

小b的名字是由前n個小寫字母組成的乙個長度為m字串。一天,小b看上了乙個金髮碧眼的漂亮妹子,但妹子在知道了小b的名字後,就無情地拋棄了小b,而原因竟然是小b的名字不夠優美!在小b的追問下,妹子告訴小b,只有回文串是優美的。於是小b決定把自己的名字變得優美,但每加入或刪除乙個字母都要付出一定的代價。為...