题目背景

yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字"

题目描述

一群同学在和yyy玩一个游戏

每次,他们会给yyy n张卡片,卡片上有数字,所有的数字都是"幸运数字",我们认为第i张卡片上数字是ai

每次yyy可以选择向前走ai步并且丢掉第i张卡片

当他手上没有卡片的时候他就赢了

但是呢,大家对"厄运数字"的位置布置下了陷阱,如果yyy停在这个格子上,那么他就输了

(注意:即使到了终点,但是这个位置是厄运数字,那么也输了)

现在,有些同学开始问:

yyy有多大的概率会赢呢?

大家觉得这是个好问题

有人立即让yyy写个程序

"电脑运行速度很快!24的阶乘也不过就620448401733239439360000,yyy你快写个程序来算一算"

yyy表示很无语,他表示他不想算概率,最多算算赢的方案数,而且是%1,000,000,007以后的值

大家都不会写程序,只好妥协

但是这时候yyy为难了,24!太大了,要跑好长时间.

他时间严重不够!需要你的帮助!

由于yyy人格分裂,某个数字可能既属于幸运数字又属于厄运数字。

思路:

想起来不难,就是写起来超级麻烦(卡常能把你卡疯)

基本的状压大家都会,就不加以介绍了

主要介绍一种优化

我们以往状压的时候是要枚举丢了哪张卡牌

但显然,O(n)扫一遍的话我们可能丢掉本来就已经丢掉的卡牌

我们可以使用lowbit优化

每次lowbit出一个这一时刻被扔掉的纸牌即可

可以大大优化常数

加上register就过了

代码:

#include<stdio.h>
#define p 1000000007
#define rii register int i
#define rij register int j
int dp[<<],ycl[<<],n,m,x[];
int main()
{
scanf("%d",&n);
for(rii=;i<n;++i)
{
scanf("%d",&ycl[<<i]);
}
scanf("%d",&m);
for(rii=;i<=m;++i)
{
scanf("%d",&x[i]);
}
dp[]=;
register int bj=<<n;
for(rii=;i<bj;++i)
{
register int low,yi;
low=i;
yi=i&(-i);
ycl[i]=ycl[i^yi]+ycl[yi];
if(ycl[i]==x[]||ycl[i]==x[])
{
continue;
}
while(low!=)
{
yi=low&(-low);
dp[i]+=dp[i^yi];
if(dp[i]>p)
{
dp[i]-=p;
}
low^=yi;
}
}
printf("%d",dp[bj-]);
}

yyy loves Maths VII(状压DP)的更多相关文章

  1. 洛谷P2396 yyy loves Maths VII

    P2396 yyy loves Maths VII 题目背景 yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字" 题目描述 ...

  2. [CF327E]Axis Walking([洛谷P2396]yyy loves Maths VII)

    题目大意:给一个长度为$n(1\leqslant n\leqslant24)$的序列$S$和$k(0\leqslant k\leqslant2)$个数. 求有多少种$S$的排列方式使得其任何一个前缀和 ...

  3. [P2396] yyy loves Maths VII

    Link: P2396 传送门 Solution: 一眼能看出$O(n*2^n)$的状压$dp$ 但此题是个卡常题,$n=23/24$的时候就别想过了 这题算是提供了一种对状压$dp$的优化思路吧 原 ...

  4. 洛谷P2396 yyy loves Maths VII【状压dp】

    题目:https://www.luogu.org/problemnew/show/P2396 题意:有n个数,每次选择一个表示走$a[i]$步,每个数只能选一次. 最多有两个厄运数字,如果走到了厄运数 ...

  5. [洛谷P2396]yyy loves Maths VII $\&$ [CF327E]Axis Walking

    这道题是一个状压动归题.子集生成,每一位表示是否选择了第$i$个数. 转移:$f[S] = \sum f[S-\{x\}]$且$x\in S$,当该子集所有元素的和为$b_1$或$b_2$时不转移. ...

  6. HDU 5657 CA Loves Math 状压DP + 枚举

    题意: 给出\(A(2 \leq A \leq 11), n(0 \leq n \leq 10^9), k(1 \leq k \leq 10^9)\). 求区间\([1, A^n]\)中各个数字互不相 ...

  7. TZOJ 2289 Help Bob(状压DP)

    描述 Bob loves Pizza but is always out of money. One day he reads in the newspapers that his favorite ...

  8. HDU - 4284 Travel(floyd+状压dp)

    Travel PP loves travel. Her dream is to travel around country A which consists of N cities and M roa ...

  9. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3336  Solved: 1936[Submit][ ...

随机推荐

  1. Reporting Service 2005 迁移 到 2008

    1. 备份ReportServer 和ReportServerTempDB 的数据库. 2. 在Reporting Services Configuration Manager 中备份Encrypti ...

  2. 如何使用火狐浏览器的Poster插件进行post请求

    原文:http://blog.csdn.net/cjm2484836553/article/details/72453907 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] ...

  3. DrawerLayout使用

    1 :DrawerLayout侧边栏用于实现如图所示的效果:

  4. UC 优视发布“UC+”开放平台

    7月5日消息,以浏览器起家的UC优视今天在2013移动互联网创新大会上正式发布“UC+”开放平台战略. UC优视公司总裁何小鹏同时表示:通过“UC+”开放平台,UC将UC浏览器全球四亿用户与移动端巨大 ...

  5. Spring IOC (DI-依赖注入)

    看到一篇文章,讲Spring的依赖注入讲的很好理解,也很容易理解,非常详细.原文地址: https://blog.csdn.net/javazejian/article/details/5456130 ...

  6. [CentOS]安装软件问题:/lib/ld-linux.so.2: bad ELF interpreter解决

    环境: [orangle@localhost Downloads]$ uname -m&&uname -r x86_64 2.6.32-220.el6.x86_64 [orangle@ ...

  7. 2.bootstrap安装

    1.下载 您可以从 http://getbootstrap.com/ 上下载 Bootstrap 的最新版本(或者 http://www.bootcss.com/  中文网) Download Boo ...

  8. FTP上传和WEB上传的区别

       说区别之前,咱先说说什么是上传?上传就是将信息从个人计算机(本地计算机)传递到中央计算机(远程计算机)系统上,让网络上的人都能看到.将制作好的网页.文字.图片等发布到互联网上去,以便让其他人浏览 ...

  9. ASP.NET Page执行顺序如:OnPreInit()、OnInit()……

    using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security ...

  10. 深入浅出SharePoint——常用的url命令

    ?&displaymode=design  页面可编辑