poj 2411 新写法
别以为我在刷水题。。。。
今天做了场srm,500pt想到了是dp但是无从下手,但是看了rng_58的神代码后顿觉海阔天空啊(盯着看了一个下午),相比于一年前的写法,真的是不忍直视啊,
TC真是个好地方。。。赞!
其实就是将普通的铺砖块问题用类似于插头dp逐格递推的思路来写。下面的代码相信大家应该都能看懂。
#include <cstdio>
#include <cstring>
#include <algorithm>
long long dp[2][1<<11];
int main() {
int n , m;
while(scanf("%d%d",&n,&m),n||m) {
int cur = 0 , nxt = 1;
dp[cur][0] = 1;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) {
memset(dp[nxt],0,sizeof(dp[nxt]));
for(int s = 0; s < (1<<m); s++) if(dp[cur][s]){
if(s&1){dp[nxt][s>>1] += dp[cur][s];continue;}
if(j+1<m && !(s&2) ){
int mask = ( s | 2 ) >> 1;
dp[nxt][mask] += dp[cur][s];
}
if(i+1<n) {
int mask = (s | (1<<m)) >> 1;
dp[nxt][mask] += dp[cur][s];
}
}
std::swap(cur,nxt);
}
}
printf("%I64d\n",dp[cur][0]);
}
return 0;
}
下面是一年前的写法。。。
#include<stdio.h>
#include<string.h>
int h,w;
__int64 dp[15][2050];
void dfs1(int row,int state,int col,int state2){
if(col>w) return ;
if(col==w) {
dp[row+1][state2]+=dp[row][state];
return ;
}
if(!(state&(1<<col))) dfs1(row,state,col+1,state2+(1<<col));
else dfs1(row,state,col+1,state2);
}
void dfs2(int row,int state,int col,int state2){
if(col>w) return ;
if(col==w) {
if(state2!=state)
dp[row][state2]+=dp[row][state];
return ;
}
if(!(state&(1<<col)) && !(state&(1<<(col+1))))
dfs2(row,state,col+2,state2+(1<<col) + (1<<(col+1)));
dfs2(row,state,col+1,state2);
}
void gao(){
int i,j;
dp[0][(1<<w)-1]=1;
for(i=0;i<h;i++){
for(j=0;j<(1<<w);j++)
if(dp[i][j])
dfs1(i,j,0,0);
for(j=(1<<w)-1;j>=0;j--)
if(dp[i+1][j])
dfs2(i+1,j,0,j);
}
}
int main(){
while(scanf("%d%d",&h,&w)!=EOF && h+w){
int temp;
if(h<w){
temp=h;h=w;w=temp;
}
memset(dp,0,sizeof(dp));
gao();
printf("%I64d\n",dp[h][(1<<w)-1]);
}
return 0;
}
poj 2411 新写法的更多相关文章
- poj 1703 Find them, Catch them 【并查集 新写法的思路】
题目地址:http://poj.org/problem?id=1703 Sample Input 1 5 5 A 1 2 D 1 2 A 1 2 D 2 4 A 1 4 Sample Output N ...
- poj 2411 Mondriaan's Dream 【dp】
题目:id=2411" target="_blank">poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然 ...
- 《精通Matlab神经网络》例10-16的新写法
<精通Matlab神经网络>书中示例10-16,在创建BP网络时,原来的写法是: net = newff(minmax(alphabet),[S1 S2],{'logsig' 'logsi ...
- 状压DP POJ 2411 Mondriaan'sDream
题目传送门 /* 题意:一个h*w的矩阵(1<=h,w<=11),只能放1*2的模块,问完全覆盖的不同放发有多少种? 状态压缩DP第一道:dp[i][j] 代表第i行的j状态下的种数(状态 ...
- [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}
IOS数组.字典.NSNumber 新写法—— @[].@{} //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...
- Poj 2411 Mondriaan's Dream(压缩矩阵DP)
一.Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, ...
- Mondriaan's Dream POJ - 2411
Mondriaan's Dream POJ - 2411 可以用状压dp,但是要打一下表.暴力枚举行.这一行的状态.上一行的状态,判断如果上一行的状态能转移到这一行的状态就转移. 状态定义:ans[i ...
- poj 2411 Mondriaan's Dream(状态压缩dP)
题目:http://poj.org/problem?id=2411 Input The input contains several test cases. Each test case is mad ...
- poj 2411 Mondriaan's Dream 轮廓线dp
题目链接: http://poj.org/problem?id=2411 题目意思: 给一个n*m的矩形区域,将1*2和2*1的小矩形填满方格,问一共有多少种填法. 解题思路: 用轮廓线可以过. 对每 ...
随机推荐
- ofbiz安装优化
一. 1.安装jdk 2.安装数据库 3.安装ant yum install ant 4.编译启动ofbiz cd /ofbiz目录下 ant run-install ./startofbiz.sh ...
- AngularJS 2调用.net core WebAPI的几个坑
前几天,按照AngularJS2的英雄指南教程走了一遍,教程网址是http://origin.angular.live/docs/ts/latest/tutorial/. 在步骤完成后,又更进一步,在 ...
- python高级编程之描述符与属性03
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #属性Property #提供了一个内建描述符类型,它知道如何将一个 ...
- NYOJ130 同样的雪花 【Hash】
同样的雪花 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 You may have heard that no two snowflakes are alike. ...
- class、interface、struct的差别
1 struct和class有什么差别 1.1默认的继承訪问权限 Struct是public的,class是private的. 你能够写例如以下的代码: struct A { char a; }; s ...
- [转]Laravel 4之表单
Laravel 4之表单 http://dingjiannan.com/2013/laravel-forms/ 创建表单 除了原有的方式创建表单,Laravel提供了一种便捷的方式 <!-- a ...
- Unity 切割导出精灵
Unity中经常使用到精灵,尤其是2D游戏中制作动画等!今天我们就学习下精灵的切割和导出吧! 废话不多说,先建议空的工程. 1,打开Unity建工程. 2 导入素材进行资源分类,工程不在于大小,这是我 ...
- T-SQL 函数概述
T-SQL函数的类别和描述: 函数类别 作用 聚合函数 返回一个标量值,表示在某个值域上的聚合,应用于特定的聚合选择或者汇总 配置变量 返回SQL Server执行环境的信息.这些信息可用于给对象编程 ...
- QQ中未读气泡拖拽消失的实现(参照一位年轻牛B的博主的思路自己实现了一下)
原文链接:http://kittenyang.com/drawablebubble/,博主年轻却很有思想.相仿的年纪,很佩服他! 首先分析拖拽时的图,大圆.不规则的图(实际上时有规律的不然也画不出来, ...
- WebBrowser中取对应的图片资源
在客户端中使用webbrower控件,控件中已显示网页,对应的图片资源应已下载完,下面从缓存中找到图片资源,两种方法都可 1.GetUrlCacheEntryInfo http://msdn.micr ...