思路:dp[i][j][x]表示状态 i 以 j 为结束 得分为 x 的方案数。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int dp[][][],g[][],d[][],n,l,ans;
bool vi[],ntou[];
struct Point{
int x,y;
}p[];
bool OK(int a,int b)
{
int x1,y1,x2,y2,i;
x1=p[a].x,y1=p[a].y;
x2=p[b].x,y2=p[b].y;
if(x1==x2){
if(y1>y2)
swap(y1,y2);
for(i=y1+;i<y2;i++) if(!vi[g[x1][i]]||ntou[g[x1][i]])
return false;
}
if(y1==y2){
if(x1>x2)
swap(x1,x2);
for(i=x1+;i<x2;i++) if(!vi[g[i][y1]]||ntou[g[i][y1]])
return false;
}
if(abs(x1-x2)==&&abs(y1-y2)==){
int x=(x1+x2)/;
int y=(y1+y2)/;
if(!vi[g[x][y]]||ntou[g[x][y]])
return false;
}
return true;
}
void init()
{
int i,j,cnt=;
for(i=;i<=;i++){
for(j=;j<=;j++){
g[i][j]=++cnt;
p[cnt].x=i,p[cnt].y=j;
}
}
for(i=;i<=;i++){
for(j=;j<=;j++){
d[i][j]=abs(p[i].x-p[j].x)+abs(p[i].y-p[j].y);
}
}
}
void solve()
{
int i,j,k,r;
ans=;
int N=(<<)-;
for(i=;i<;i++)
dp[<<i][i+][]=;
for(i=;i<=N;i++){
memset(vi,,sizeof(vi));
for(k=;k<;k++) if(((<<k)&i)) vi[k+]=;
for(j=;j<;j++) if((((<<j)&i))&&!ntou[j+]){
for(k=;k<;k++) if(((<<k)&i)==&&!ntou[k+]&&OK(j+,k+)){
//cout<<p[j+1].x<<" "<<p[j+1].y<<" "<<p[k+1].x<<" "<<p[k+1].y<<endl;
for(r=;r<=;r++){
dp[i|(<<k)][k+][r+d[j+][k+]]+=dp[i][j+][r];
}
}
}
}
for(i=;i<=N;i++){
for(j=;j<=;j++){
ans+=dp[i][j][l];
}
}
}
int main()
{
int i,j,t,x,y;
init();
scanf("%d",&t);
while(t--){
memset(dp,,sizeof(dp));
memset(vi,,sizeof(vi));
memset(ntou,,sizeof(ntou));
scanf("%d%d",&l,&n);
for(i=;i<=n;i++){
scanf("%d%d",&x,&y);
ntou[g[x][y]]=;
}
if(l>=){
printf("BAD MEMORY\n");
continue;
}
solve();
if(ans)
printf("%d\n",ans);
else
printf("BAD MEMORY\n");
}
return ;
}

uvalive 6323 状态压缩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. python_49_三种编程方式及面向过程与面向函数区别.py

    ''' 三种编程方式:1.面向对象 (类:class)2.面向过程 (过程:def)3.函数式编程(函数:def) 编程语言中函数的定义:函数是逻辑结构化和过程化的一种编程方法 过程与函数的区别,过程 ...

  2. python之道12

    整理今天笔记,课上代码最少敲3遍. 用列表推导式做下列小题 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 l = ['wusir', 'laonanhai', 'aa', 'b', 'tai ...

  3. iOS 控制section不悬停 --- iOS开发系列 ---项目中成长的知识八

    一般情况下,tableview中的section是会默认不随着tableview的滚动而滚动的,而是会等到属于这个section的cell滑完过后,然后往上顶(不知道大家能不能听懂=_=!) 有些时候 ...

  4. 五、Linux 远程登录

    Linux 远程登录 Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ss ...

  5. 扒一扒 EventServiceProvider 源代码

    Ajax用一句话来说就是无须刷新页面即可从服务器取得数据.注意,虽然Ajax翻译过来叫异步JavaScript与XML,但是获得的数据不一定是XML数据,现在服务器端返回的都是JSON格式的文件. 完 ...

  6. MySQL 如何生成日期表

    MySQL 如何生成日期表 在开发过程中,经常会遇到统计问题,通常交易信息都不是连续的,此时,统计出来的数据都是不连续的,所以提前生成一个时期表,当没有交易数据的时候填充0,就可以了,下面是生成日期表 ...

  7. 将数组转化为json字符串(不使用json_encode函数)

    将数组转化为json字符串(不使用json_encode函数) public function arrayToJson($arr,$jsonStr=''){ $jsonStr.='{'; foreac ...

  8. python3调取百度地图API输出某地点的经纬度信息

    1. 查看API接口说明 地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding 注:callback ...

  9. 数学算法:CF534A-Exam(思维)

    Exam time limit per test 1 second memory limit per test 256 megabytes input standard input output st ...

  10. 笔记-数据库-redis

    笔记-数据库-redis 1.      redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 stri ...