HDU 5117 簡單揹包dp

2021-07-04 23:48:35 字數 1199 閱讀 1669

本題目的意思,就是有n個燈泡,和m個開關,每個開關控制著一些燈的明亮,求所有在2^m種選擇下,所有明著的燈三次方總和,

定義xi 為第i盞燈的明亮情況0代表不明,1,代表名

x^3 = (x1 + x2 + x3 .. xn)*(x1 + x2 + x3 .. xn)*(x1 + x2 + x3 .. xn) 所以可以分開求在三盞燈為i,j,k 時所有情況個數,也就是這三盞燈對答案的貢獻。

#include #include #include #include #include #include #include #include #include #include #include #define ls rt<<1

#define rs rt<<1|1

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define mem(a,n) memset(a,n,sizeof(a))

#define rep(i,n) for(int i=0;i<(int)n;i++)

#define rep1(i,x,y) for(int i=x;i<=(int)y;i++)

using namespace std;

//#pragma comment(linker, "/stack:102400000,102400000")

typedef pairpii;

typedef long long ll;

const int inf = 0x3f3f3f3f;

const ll oo = 1e12;

typedef pairpll;

const int mod = 1e9+7;

const int n = 55;

int a,b,c,n,m;

int st[n][n];

bool vis[n][8];

int d[n][8];

inline int tran(int p,int s)

int main()

ll ans = 0;

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

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

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

printf("case #%d: %d\n",kase++,(int)ans);

}return 0;

}

hdu5117 數學推導 dp

題意 有n n 50 個燈,初始狀態都是關閉,有m個開關,每個開關都控制若干個燈,按下乙個開關,他所控制的燈就會由閉到開,或是由開到閉。問在m個開關按下與否的2 m的情況中,求每種情況下亮燈數量的立方和。解法 假設 一種情況是開燈數是x,x x1 x2 x3.xn xi是第i個燈的開閉情況。則 x ...

hdu 2844 混合揹包 揹包dp

題意 有n種紙幣面額 a1,a2,an 每種面額對應有 c1,c2,cn 張。問這些錢能拼成1 m中多少種值。題解 揹包dp問題。若ci 1,是01揹包,若ci ai m則是完全揹包,否則是多重揹包。詳見 揹包九講 先複習一下三種簡單揹包形式 01揹包 f v max 完全揹包 f i,v max ...

dp專題 簡單基礎dp 揹包

按照這個做的 hdu 1864 最大報銷額 01揹包 方法一 double型別的揹包 總數30個 每個最大1000 保留2位有效位。直接把double 100轉換為int型的揹包 看清題目 double型的01揹包 include include include using namespace st...