本題目的意思,就是有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...