状态压缩DP真心不会写,参考了别人的写法。

先预处理出合理状态,

我们用二进制表示可以放棋子的状态,DP[I][J][K]:表示现在处理到第I行,J:表示第I行的状态,K表示现在为止一共放的棋子数量。

#include<stdio.h>
#include<iostream>
#define N 1111
using namespace std;
typedef long long ll; int num,n,m;
ll dp[11][1<<11][90];
int hh[N],hnum[N];
int mp[1111][1111]; int check(int x,int y)
{
if (x&(y<<1)) return 0;
if (x&(y>>1)) return 0;
if (x&y) return 0;
return 1;
} int judge(int x)
{
if (x&(x<<1)) return 0;
if (x&(x>>1)) return 0;
return 1;
} int getsum(int x)
{
int ans=0;
while (x)
{
if (x&1) ans++;
x>>=1;
}
return ans;
} void pre()
{
num=0;
for (int i=0;i<(1<<n);i++)
if (judge(i))
{
hh[++num]=i;
hnum[num]=getsum(i);
} for (int i=1;i<=num;i++)
for (int j=1;j<=num;j++)
if (check(hh[i],hh[j]))
mp[i][j]=mp[j][i]=1;
} int main()
{
cin>>n>>m;
pre();
dp[0][1][0]=1;
for (int i=0;i<n;i++)
for (int j=1;j<=num;j++)
for (int k=0;k<=m;k++)
if (dp[i][j][k])
for (int p=1;p<=num;p++)
if (mp[j][p]&&k+hnum[p]<=m)
dp[i+1][p][k+hnum[p]]+=dp[i][j][k]; ll ans=0;
for (int i=1;i<=num;i++)
ans+=dp[n][i][m];
cout<<ans<<endl;
return 0;
}

  

BZOJ 1087状态压缩DP的更多相关文章

  1. hoj2662 状态压缩dp

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...

  2. POJ 3254 Corn Fields(状态压缩DP)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4739   Accepted: 2506 Descr ...

  3. [知识点]状态压缩DP

    // 此博文为迁移而来,写于2015年7月15日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6jf.html 1.前 ...

  4. HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP

    题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...

  5. DP大作战—状态压缩dp

    题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...

  6. 状态压缩dp问题

    问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...

  7. BZOJ-1226 学校食堂Dining 状态压缩DP

    1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MB Submit: 588 Solved: 360 [Submit][ ...

  8. Marriage Ceremonies(状态压缩dp)

     Marriage Ceremonies Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  9. HDU 1074 (状态压缩DP)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...

随机推荐

  1. 利用FMX控件的MakeScreenshot过程实现WAIT效果

    原理: 1.新建一个waitform,添加控件: 背景图片BACKPIC:Timage控件: 再叠加一个WAIT图标(TAniIndicato控件). 2.在要实现wait效果的form上添加一个控件 ...

  2. android ping网络是否成功

    public static boolean pingHost(String str) { //str 为要ping的IP地址 boolean result = false; try { Process ...

  3. 为啥 Objective-C 使用中括号来调用类方法?

    原因在这篇文章中:http://stackoverflow.com/questions/23723838/why-does-objective-c-use-square-brackets-for-me ...

  4. C#学习笔记(与Java、C、C++和Python对比)

    (搬运自我在SegmentFault的博客) 最近准备学习一下Unity3D,在C#和JavaScript中选择了C#.所以,作为学习Unity3D的准备工作,首先需要学习一下C#.用了一两天的时间学 ...

  5. 【转载/修改】ScrollLayout代码修正,追加模仿viewpager滚动速度

    组件作用为类似ViewPager但直接插视图的横向滚动容器. 修改自:http://blog.csdn.net/yaoyeyzq/article/details/7571940 在该组件基础上修正了滚 ...

  6. GRE协议学习与练习

    通用路由封装(英语:Generic Routing Encapsulation,缩写为GRE),一种隧道协议,可以在虚拟点对点链路中封装多种网络层协议.由思科系统开发 以下是GRE协议的简单练习 网络 ...

  7. Laravel5.1控制器小结

    控制器一般存放在app\Http\Controllers目录下,所有Laravel控制器都应继承基础控制器类. 基础控制器 基础控制器例子: <?php namespace App\Http\C ...

  8. Windows Phone动画

    从事Windows Phone开发已经有一段时间了,但是一直没有好好的静下心来梳理一下自己这段时间的知识,一是怕自己学问不到家,写不出那些大牛一般的高屋建瓴:二是以 前一直没有写博客的习惯:好了废话不 ...

  9. RCF

    1. RCF: 纯c++的RPC, 不引入IDL, 大量用到boost,比较强大.2. casocklib:  protobuf + asio 较完善实现3. eventrpc: protobuf + ...

  10. IOS判断网络环境

    https://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html 我下载的是vertio ...