hdu5117 數學推導 dp

2021-06-27 08:45:29 字數 806 閱讀 9812

題意:有n(n<=50)個燈,初始狀態都是關閉,有m個開關,每個開關都控制若干個燈,按下乙個開關,他所控制的燈就會由閉到開,或是由開到閉。問在m個開關按下與否的2^m的情況中,求每種情況下亮燈數量的立方和。

解法:假設

一種情況是開燈數是x,

x=(x1+x2+x3...xn),

xi是第i個燈的開閉情況。 則

x^3=(x1+x2+x3...xn)*(x1+x2+x3...xn)*(x1+x2+x3...xn)。即求三個燈的三三組合xi*xj*xk,只有xi,xj,xk都為1時候,他們的乘積才是1.

dp[i][j][k][state]表示三個燈ijk狀態為state的方案數,state為0-7,狀壓表示每個燈的開閉。轉移就是列舉每個開關的開閉。然後就是轉移計算所有狀態了。

**:#include #include #include #include #include using namespace std;

const int max=51;

int rem[max][max];

const long long inf=1000000007;

int dp[max][max][max][8][2];

int n,m;

int main()

{ int t;

scanf("%d",&t);

int kk=1;

while(t--)

{int n,m;

scanf("%d%d",&n,&m);

memset(rem,0,sizeof rem);

for(int i=0; i

HDU 5117 簡單揹包dp

本題目的意思,就是有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 時所有情況個...

hdu 5312 Sequence 數學推導

解法 這個題看上去是乙個貪心,但是這個貪心顯然是錯的.事實上這道題目很簡單,先判斷1個是否可以,然後判斷2個是否可以.之後找到最小的整數k k 2 使得 m k mod 6 0即可.證明如下 3n n 1 1 6 n n 1 2 1,注意到n n 1 2是三角形數,任意乙個自然數最多只需要3個三角形...

HDU2086 A1 數學推導

有如下方程 ai ai 1 ai 1 2 ci i 1,2,3,n 若給出a0,an 1,和 c1,c2,cn.請程式設計計算a1 輸入包括多個測試例項。對於每個例項,首先是乙個正整數n,n 3000 然後是2個數a0,an 1.接下來的n行每行有乙個數ci i 1,n 輸入以檔案結束符結束。對於每...