题目链接:HDU-5117

题意为有n盏灯,m个开关,每个开关控制着\( k_{i} \)灯。X为最后亮着的灯的个数,要求出\( E(X^{3} ) * 2^{M} mod (10^9 + 7) \)。

可以看出\(  E(X^{3} ) * 2^{M} = \sum (X^{3} * (\frac{1}{2})^{m}) * 2^{m} = \sum X^{3} \)

然后将 \(   \sum X^{3}  \) 分解为\( \sum X^{3} = \sum_{i,j,k = 1}^{n} x_{i} * x_{j} * x_{k}  \)

于是问题就转化成了求对于所有的i,j,k,有多少种情况i,j,k都亮着。

于是我们可以写出状态转移方程f[i][j][k][state][ii] = f[i][j][k][state][ii-1] + f[i][j][k][state ^ \( switch_{ii}\)][ii-1];

其中f[i][j][k][state][ii]表示使用前ii个开关使i,j,k的状态为state的方案数。

我们发现i,j,k其实没有必要记录。所以进一步,我们可以把方程优化为f[state][ii] = f[state][ii-1] + f[state ^ switch[ii]][ii-1];

另外还有一个需要注意的小细节是注意使用1LL。

代码如下:

 #include<cstdio>
#include<set>
#include<map>
#include<cstring>
#include<algorithm>
#include<queue>
#include<iostream>
using namespace std;
typedef long long LL; const LL MOD = 1e9 + ;
const LL MAXN = ;
LL d[MAXN];
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
LL t;
scanf("%lld",&t);
for(LL tt = ; tt <= t; tt++)
{
memset(d,,sizeof(d));
LL n,m;
scanf("%lld%lld", &n, &m);
for(LL i = ; i <= m; i++)
{
LL k;
scanf("%lld", &k);
for(LL j = ; j <= k; j++)
{
LL tmp;
scanf("%lld", &tmp);
d[i] += (1LL << (tmp-));
}
}
LL ans=;
for(LL i = ; i <= n; i++)
for(LL j = ; j <= n; j++)
for(LL k = ; k <= n; k++)
{
LL f[][MAXN];
memset(f,,sizeof(f));
f[][]=;
for(LL ii = ; ii <= m; ii++)
{
LL ss=;
if(d[ii] & (1LL << (i-))) ss ^= ;
if(d[ii] & (1LL << (j-))) ss ^= ;
if(d[ii] & (1LL << (k-))) ss ^= ;
for(LL jj=;jj<=;jj++)
{
f[jj][ii] += f[jj][ii-];
f[jj][ii] += f[jj ^ ss][ii - ];
}
}
ans = (ans + f[][m]) % MOD;
//printf("%lld %lld %lld %lld\n", i, j, k, ans);
}
printf("Case #%lld: %lld\n", tt, ans);
}
return ;
}

最新文章

  1. golang reflect
  2. [问题2014A12] 复旦高等代数 I(14级)每周一题(第十四教学周)
  3. 使用Apache Tomcat Maven插件部署运行 Web 项目
  4. JAVA_输入输出流 异常处理
  5. HDU 3507 Print Article(斜率优化DP)
  6. java中的闭包和回调
  7. 最大独立集 HDU 1068
  8. python基础操作_文件读写操作
  9. 201521123104《Java程序设计》第4周学习总结
  10. Hibernate @Embeddable注释
  11. JS 获取字符串实际长度
  12. highchart 十字准星 crosshairs
  13. 【Jest】笔记二:Matchers匹配器
  14. https创建请求UrL报错: 未能为 SSL/TLS 安全通道建立信任关系
  15. wxWidgets与其它GUI工具库比较
  16. 解决由腾讯qq浏览器引起win10系统桌面图标不停的闪烁问题
  17. wpf 控件简单介绍
  18. HTML5 canvas 内部元素事件响应
  19. 论坛:排序 &gt;&gt;case..when..then ..end的妙用
  20. css后代选择器 .属性 元素 与 元素.属性的区别

热门文章

  1. 使用for循环遍历数组元素
  2. 用select模拟一个socket server
  3. BZOJ4503 两个串 【fft】
  4. POJ.1006 Biorhythms (拓展欧几里得+中国剩余定理)
  5. 弱校的ACM奋斗史
  6. mysql五补充部分:SQL逻辑查询语句执行顺序
  7. CCPC-Winter Camp div2 day8 A
  8. [ethernet]ubuntu更换网卡驱动
  9. [mysql]修改表段默认值
  10. jquery 遮罩层显示img