HDU 5434
其实是一道状态DP题。都是行与行之间的转移,可以知道,当某j列中有一个象,如果存在情况i-1行j-1列有象而i,j-1位置无象则不可放,或者i-1,j+1有而i,j+1无同样不可放。
使用快速状态转移
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath> using namespace std; const int mod=1000000007;
const int MAX=(1<<7);
int TranMatrix[MAX][MAX];
int tmp[MAX][MAX];
/*
int mul(int a,int b){
int res=0;
while(b){
if(b&1) res=(res+a)%mod;
a=(a+a)%mod;
b>>=1;
}
return res;
}
*/
int quick(int Status,int n){
int ans[MAX][MAX],for_save[MAX][MAX];
memset(ans,0,sizeof(ans));
for(int i=0;i<MAX;i++) ans[i][i]=1;
while(n){
if(n&1){
for(int i=0;i<Status;i++){
for(int j=0;j<Status;j++){
for_save[i][j]=0;
for(int k=0;k<Status;k++){
for_save[i][j]=(for_save[i][j]+1LL*ans[i][k]*tmp[k][j]%mod);
if(for_save[i][j]>mod) for_save[i][j]-=mod;
}
}
}
for(int i=0;i<Status;i++){
for(int j=0;j<Status;j++)
ans[i][j]=for_save[i][j];
}
}
n>>=1;
for(int i=0;i<Status;i++){
for(int j=0;j<Status;j++){
for_save[i][j]=0;
for(int k=0;k<Status;k++){
for_save[i][j]=(for_save[i][j]+1LL*tmp[i][k]*tmp[k][j]%mod);
if(for_save[i][j]>mod) for_save[i][j]-=mod;
}
}
}
for(int i=0;i<Status;i++){
for(int j=0;j<Status;j++)
tmp[i][j]=for_save[i][j];
}
}
int res=0;
for(int i=0;i<Status;i++)
res=(res+ans[0][i])%mod;
return res;
} int main(){
int n,m;
int Status=(1<<7);
for(int i=0;i<(Status);i++){
for(int j=0;j<Status;j++){
bool flag=true;
for(int k=0;k<7;k++){
if((((1<<k)&j)==(1<<k))&&(((1<<k)&i)==0)){
if((((1<<(k+1))&j)==0)&&(((1<<(k+1))&i)>0)){
flag=false;
break;
}
else if(k>0&&((1<<(k-1))&j)==0&&(((1<<(k-1))&i)>0)){
flag=false;
break;
}
}
}
TranMatrix[i][j]=flag?1:0;
}
}
while(scanf("%d%d",&n,&m)!=EOF){
//swap(n,m);
Status=1<<m;
for(int i=0;i<Status;i++){
for(int j=0;j<Status;j++)
tmp[i][j]=TranMatrix[i][j];
}
printf("%d\n",quick(Status,n)); }
return 0;
}
矩阵可过。
HDU 5434的更多相关文章
- HDU 5434 Peace small elephant 状压dp+矩阵快速幂
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5434 Peace small elephant Accepts: 38 Submissions: ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 4006The kth great number(K大数 +小顶堆)
The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ...
- HDU 1796How many integers can you find(容斥原理)
How many integers can you find Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d ...
- hdu 4481 Time travel(高斯求期望)(转)
(转)http://blog.csdn.net/u013081425/article/details/39240021 http://acm.hdu.edu.cn/showproblem.php?pi ...
- HDU 3791二叉搜索树解题(解题报告)
1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...
随机推荐
- NS2学习笔记(四)
这几天学习NS2,虽然国内很多人使用,但系统的教材资料不多,只能一边看中文教材,一边看英文手册,知识点也是零零散散.过段时间等能将所有知识点串上,再总结总结.现只讲一些零碎的点记录一下. 添加新的协议 ...
- NS2学习笔记(一)
NS2有两种运行方式: 1.“脚本方式”,输入命令: ns tclscripl.tcl,其中 tclscripl.tcl 是一个Tcl脚本的文件名: 2“命令行方式”,输入命令:ns,进入NS2的命令 ...
- ios TextField 不被键盘遮住
首先放一个scrollView窗口,将Scroll View视图占整个屏幕. 向Scroll View 添加TextField 控件. 首先,ViewController.h 代码如下; #i ...
- Hadoop Hive概念学习系列之hive里的扩展接口(CLI、Beeline、JDBC)(十六)
<Spark最佳实战 陈欢>写的这本书,关于此知识点,非常好,在94页. hive里的扩展接口,主要包括CLI(控制命令行接口).Beeline和JDBC等方式访问Hive. CLI和B ...
- 未能加载文件或程序集Microsoft.SharePoint.Sandbox.dll
项目引用了MiscroSoft.SharePoint.dll程序集,编译后页面报错: 未能加载文件或程序集“Microsoft.Sharepoint.Sandbox, Version=14.0.0.0 ...
- 消息队列 (2) java实现简单的RabbtMQ
假设有如下问题: 1.如果消费者连接中断,这期间我们应该怎么办? 2.如何做到负载均衡? 3.如何有效的将数据发送到相关的接收者?就是怎么样过滤 4.如何保证消费者收到完整正确的数据 5.如何让优先级 ...
- MVC系列学习(五)-传递数据 与 接收数据
1.控制器向视图传递数据 a.使用ViewData b.使用ViewBag c.使用Model 方式二: d.使用TempData 2.为什么在控制器中设置了一些属性,在视图中可以接受 3.Actio ...
- PHP配置步骤
背景: 作为web前端人员,必不可少的会接触到一些服务器端的脚本语言,比如PHP.因为最近在进行相关知识的总结,同时也回顾一下PHP基础知识.这次总结先从PHP的开始说起,即PHP的配置步骤. 什么是 ...
- C# ADO.NET动态数据的增删改查(第五天)
一.插入登录框中用户输入的动态数据 /// <summary> /// 添加数据 /// </summary> /// <param name="sender& ...
- dotnetnuke 7.x登录时不跳到站点设置中的指定页
查源码发现登录按钮有参数,点击跳到登录页或者弹窗登录,真正登录后会根据传参的url反回.因为皮肤对像没有相应参数,所以只能去掉参数.我是用js去的,偷个懒吧.如下所示: <script type ...