很容易想到dp,但是1<<24都有1600w的复杂度,要是普通做法肯定T掉

共有maxs=(1<<n)-1种情况

首先f[ ]记录某种情况的方案数,dis[ ]记录某种情况的步数和

然后每次到dis[i]=厄运值就不更新

解决卡常的方法

正常做法:2^(n+1) 肯定会T

改成 :2^nlogn  O2优化过了 恶心心

f[i]=去掉i中某一个1的所有情况f[j]和

寻找某一个1用lowbit
删除某一个1用异或^

代码如下:

// luogu-judger-enable-o2//#pragma comment (linker, "/STACK:102400000,102400000")
#include<bits/stdc++.h>
#include<stdio.h>
#include<string.h>
#include<string>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<set>
#include<stack>
#include<vector>
#include<map>
#include<queue>
#include<list>
#include<time.h>
#include<bitset>#define myself i,l,r
#define lson i<<1
#define rson i<<1|1
#define Lson i<<1,l,mid
#define Rson i<<1|1,mid+1,r
#define half (l+r)/2
#define lowbit(x) x&(-x)
#define min4(a, b, c, d) min(min(a,b),min(c,d))
#define min3(x, y, z) min(min(x,y),z)
#define max3(x, y, z) max(max(x,y),z)
#define max4(a, b, c, d) max(max(a,b),max(c,d))
#define pii make_pair
#define pr pair<int,int>
typedef unsigned long long ull;
typedef long long ll;
const int inff = 0x3f3f3f3f;
const long long inFF = 9223372036854775807;
const int dir[4][2] = {0, 1, 0, -1, 1, 0, -1, 0};
const int mdir[8][2] = {0, 1, 0, -1, 1, 0, -1, 0, 1, 1, -1, 1, 1, -1, -1, -1};
const double eps = 1e-10;
const double PI = acos(-1.0);
const double E = 2.718281828459;
using namespace std;
const int mod=1e9+7;
const int maxn=1e5+51;
int f[1<<24],dis[1<<24];
int eyun[2];
int n,op;
int main()
{cin>>n;int maxs=(1<<n)-1;for(int i=0;i<n;i++) scanf("%d",&dis[1<<i]);cin>>op;for(int i=0;i<op;i++) scanf("%d",&eyun[i]);f[0]=1;for(int i=1;i<=maxs;i++){int j=i&(-i),k=i;dis[i]=dis[i^j]+dis[j];if(dis[i]==eyun[0]||dis[i]==eyun[1]) continue;while(k){j=k&(-k);f[i]+=f[i^j];if(f[i]>=mod) f[i]-=mod;k^=j;}}printf("%d\n",f[maxs]);return 0;
}

P2396 yyy loves Maths VII 状压dp 变态卡常相关推荐

  1. [P2396] yyy loves Maths VII

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

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

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

  3. Orz_panda cup I题 (xdoj1117) 状压dp

    Orz_panda cup I题 (xdoj1117)  状压dp 1117: Insert Orz Pandas 时间限制: 2 Sec  内存限制: 128 MB 提交: 15  解决: 5 [提 ...

  4. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  5. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  6. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  7. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  8. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★

    昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...

  9. hdu 4778 Gems Fight! 状压dp

    转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...

最新文章

  1. 系统SDK介绍-02
  2. 企业级闪存弥补数据经济价值短板
  3. iOS更改状态栏前景色背景色
  4. 【OCP新题库】052最新题库解析-第5题
  5. 《JavaScript DOM 编程艺术》 读书笔记
  6. 多维数组(C# 编程指南)
  7. mysql中出现 xC4 xDD_mysql数据库调优总结(二)
  8. 微信小程序开发(二)
  9. 19道Python基础列表元祖的练习题
  10. ShuffleNet论文阅读笔记
  11. SAP OData服务性能测量的几种工具和手段
  12. P3224 [HNOI2012]永无乡(并查集+权值线段树合并/平衡树)
  13. 整蛊偷快递的家伙!不愧是 NASA 工程师
  14. jq之toggle()
  15. CVPR学习(三):CVPR2019-各个方向
  16. L2TP/IPSec一键安装脚本
  17. python 化学_rdkit 化学反应分子式高级功能
  18. 刨根究底字符编码之四——EASCII及ISO 8859字符编码方案
  19. 指针真的是个小机灵--将字符串中的n个字符左移,串中的前n个字符移到最后
  20. Hadoop集群性能测试

热门文章

  1. java 关键字(面试题)
  2. SQL概念及DDL语句
  3. hdu2006 求奇数的乘积【C++】
  4. IntelliJ IDEA 自动编译功能无法使用,On 'update' action:选项里面没有update classes and resources这项...
  5. 比较ArrayList、LinkedList、Vector
  6. 利用JS判断是手机端还是PC端 浏览网站
  7. (一三〇)UITextField的光标操作扩展
  8. 解决Apache CXF 不支持传递java.sql.Timestamp和java.util.HashMap类型问题
  9. 一些权限管理方面的文章
  10. shell与 .sh文件与 .bash文件