题目大意:有n个灯泡,m个按钮,(1 <= n, m <= 50),每个按钮和ki 个灯泡相关, 按下后,转换这些灯泡的状态,问你所有2^m的按下按钮的

组合中亮着的灯泡的数量的三次方的和。

思路:要是将所有灯泡混在一起算很难算,我们先考虑  所有2^m的按下按钮的 组合中亮着的灯泡的数量的和, 我们可以枚举每个灯泡然后,计算出

有多少中情况这个灯泡是亮着的,然后全部求和。

现在是三次方的和,所以要变形一下, 我们设xi 为第i 个灯泡的状态(1开, 0关)那么对于每一种情况我们求的是

(x1 + x2 + x3 + ... + xn) * (x1 + x2 + x3 + ... + xn) * (x1 + x2 + x3 + ... + xn) = sigma(xi * xj * xk),然后枚举i,j,k用dp进行计算。
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int> using namespace std; const int N = + ;
const int M = 1e4 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 +;
const double eps=1e-;
const double pi=acos(-); int n, m;
int dp[N][];
bool Map[N][N]; void add(int &a, LL b) {
a += b; if(a >= mod) a -= mod;
}
int cal(int a, int b, int c) { memset(dp, , sizeof(dp));
dp[][] = ; for(int i = ; i <= m; i++) {
int state = ;
if(Map[i][a]) state |= ;
if(Map[i][b]) state |= ;
if(Map[i][c]) state |= ;
for(int s = ; s < ; s++) {
add(dp[i][s], dp[i - ][s]);
add(dp[i][s], dp[i - ][s ^ state]);
}
} return dp[m][];
}
int main() {
int T; scanf("%d", &T);
for(int cas = ; cas <= T; cas++) {
memset(Map, false, sizeof(Map));
scanf("%d%d", &n, &m);
for(int i = ; i <= m; i++) {
int k; scanf("%d", &k);
while(k--) {
int x; scanf("%d", &x);
Map[i][x] = true;
} } int ans = ; for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
for(int k = ; k <= n; k++) {
add(ans, cal(i, j, k));
}
}
} printf("Case #%d: %d\n", cas, ans);
}
return ;
} /*
*/

hdu 5117 数学公式展开 + dp的更多相关文章

  1. HDU 1011 树形背包(DP) Starship Troopers

    题目链接:  HDU 1011 树形背包(DP) Starship Troopers 题意:  地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...

  2. hdu 2296 aC自动机+dp(得到价值最大的字符串)

    Ring Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. HDU 4778 状压DP

    一看就是状压,由于是类似博弈的游戏.游戏里的两人都是绝对聪明,那么先手的选择是能够确定最终局面的. 实际上是枚举最终局面情况,0代表是被Bob拿走的,1为Alice拿走的,当时Alice拿走且满足变换 ...

  4. HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解)

    HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解) 题意分析 要先排序,在做01背包,否则不满足无后效性,为什么呢? 等我理解了再补上. 代码总览 #in ...

  5. HDOJ(HDU).2546 饭卡(DP 01背包)

    HDOJ(HDU).2546 饭卡(DP 01背包) 题意分析 首先要对钱数小于5的时候特别处理,直接输出0.若钱数大于5,所有菜按价格排序,背包容量为钱数-5,对除去价格最贵的所有菜做01背包.因为 ...

  6. HDOJ(HDU).2602 Bone Collector (DP 01背包)

    HDOJ(HDU).2602 Bone Collector (DP 01背包) 题意分析 01背包的裸题 #include <iostream> #include <cstdio&g ...

  7. HDOJ(HDU).1058 Humble Numbers (DP)

    HDOJ(HDU).1058 Humble Numbers (DP) 点我挑战题目 题意分析 水 代码总览 /* Title:HDOJ.1058 Author:pengwill Date:2017-2 ...

  8. HDOJ(HDU).1003 Max Sum (DP)

    HDOJ(HDU).1003 Max Sum (DP) 点我挑战题目 算法学习-–动态规划初探 题意分析 给出一段数字序列,求出最大连续子段和.典型的动态规划问题. 用数组a表示存储的数字序列,sum ...

  9. Bomb HDU - 3555 (数位DP)

    Bomb HDU - 3555 (数位DP) The counter-terrorists found a time bomb in the dust. But this time the terro ...

随机推荐

  1. HDU3231拓扑排序

    Box Relations Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  2. 搜索:N皇后

    N皇后问题是DFS的代表性问题,其最难的地方就是在判重这里,想明白了怎么判重的话问题就很显然了. 这里给出两份代码,其中第一份代码的效率更好,就是在判重上下了功夫.当然,我记得还有使用位运算进行判重的 ...

  3. 51nod 1486 大大走格子——dp

    有一个h行w列的棋盘,里面有一些格子是不能走的,现在要求从左上角走到右下角的方案数. Input 单组测试数据. 第一行有三个整数h, w, n(1 ≤ h, w ≤ 10^5, 1 ≤ n ≤ 20 ...

  4. UIImageView属性---iOS-Apple苹果官方文档翻译

    本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址  //转载请注明出处--本文永久链接:http://www.cnblogs.com/C ...

  5. hdu 1598 find the most comfortable road (并查集+枚举)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1598 find the most comfortable road Time Limit: 1000/ ...

  6. Codeforces Round #483 (Div. 1) 简要题解

    来自FallDream的博客,未经允许,请勿转载,谢谢. 为了证明一下我又来更新了,写一篇简要的题解吧. 这场比赛好像有点神奇,E题莫名是道原题,导致有很多选手直接过掉了(Claris 表演24s过题 ...

  7. CTSC/APIO2018 帝都一周游

    day0 报道 上午早早就起来了,两点才到酒店,然后去简单试了试机子. 不得不说今年八十中的伙食变得瓜皮了啊,去年还是大叠的5元卷,今年变成了单张的*餐卷.不知道食堂吝啬什么,面条米饭都只有一点点,还 ...

  8. mysql之安装和配置(一)

    环境 oracle linux7.3 数据库:MySQL-5.7.20 mysql的安装 先安装依赖的插件 yum install libaio 去官网下载mysql-5.7.20的tar.gz包: ...

  9. java===java基础学习(1)---数据类型,运算,变量,常量

    今天起开始了java的学习之路,主要学习了数据类型和运算,变量,常量.基本和python有很多相通的地方,所以看起来很容易上手.下面是学习笔记! package testbotoo; public c ...

  10. ICTPOS3.0 词性标注集

    Ag 形语素 形容词性语素.形容词代码为a,语素代码g前面置以A. a 形容词 取英语形容词adjective的第1个字母. ad 副形词 直接作状语的形容词.形容词代码a和副词代码d并在一起. an ...