lightoj 1244 - Tiles 状态DP
思路:状态DP
dp[i]=2*dp[i-1]+dp[i-3]
代码如下:
求出循环节部分
1 #include<stdio.h>
2 #define m 10007
3 int p[m];
4 int main()
5 {
6 p[0]=p[1]=1;p[2]=2;
7 for(int i=3;i<m;i++){
8 p[i]=2*p[i-1]+p[i-3];
9 p[i]%=m;
10 }
11 int t,ca=0,n;
12 scanf("%d",&t);
13 while(t--){
14 scanf("%d",&n);
15 printf("Case %d: %d\n",++ca,p[n%(m-1)]);
16 }
17 return 0;
18 }
用矩阵快速幂求
1 #include<stdio.h>
2 #include<cstring>
3 #define mod 10007
4 struct mat
5 {
6 int m[3][3];
7 }e,d;
8 int an[3]={2,1,1};
9 mat Mul(mat a,mat b)
10 {
11 mat ans;
12 for(int i=0;i<3;i++)
13 for(int j=0;j<3;j++){
14 ans.m[i][j]=0;
15 for(int k=0;k<3;k++)
16 ans.m[i][j]+=a.m[i][k]*b.m[k][j];
17 ans.m[i][j]%=mod;
18 }
19 return ans;
20 }
21 int Pow(int n)
22 {
23 mat ans=e,a=d;
24 while(n){
25 if(n&1) ans=Mul(ans,a);
26 n>>=1;
27 a=Mul(a,a);
28 }
29 return ans.m[0][0];
30 }
31 int main()
32 {
33 memset(e.m,0,sizeof(e.m));
34 memset(d.m,0,sizeof(d.m));
35 for(int i=0;i<3;i++) e.m[0][i]=an[i];
36 d.m[0][1]=d.m[1][2]=d.m[2][0]=1;
37 d.m[0][0]=2;
38 int t,n,ca=0;
39 scanf("%d",&t);
40 while(t--){
41 scanf("%d",&n);
42 printf("Case %d: ",++ca);
43 if(n==1) printf("1\n");
44 else printf("%d\n",Pow(n-2));
45 }
46 return 0;
47 }
lightoj 1244 - Tiles 状态DP的更多相关文章
- LightOJ 1244 - Tiles 猜递推+矩阵快速幂
http://www.lightoj.com/volume_showproblem.php?problem=1244 题意:给出六种积木,不能旋转,翻转,问填充2XN的格子有几种方法.\(N < ...
- hdu 4614 pieces 状态DP
题意:给你一个长度小于等于16的字符串,每次可以删除一个回文传,问你最少删除干净的字数. 状态+dp dp[i] = min(dp[i],dp[j]+dp[j^i]);(j是i的字串): 连接:htt ...
- hdu 4778 Gems Fight! 博弈+状态dp+搜索
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4102743.html 题目链接:hdu 4778 Gems Fight! 博弈+状态dp+搜 ...
- POJ 3254 压缩状态DP
题意:一个矩形网格,可以填0或1, 但有些位置什么数都不能填,要求相邻两个不同时为1,有多少种填法.矩形大小最大 12*12. 压缩状态DP大多有一个可行的state的范围,先求出这个state范围, ...
- 【状态DP】 HDU 1074 Doing Homework
原题直通车:HDU 1074 Doing Homework 题意:有n门功课需要完成,每一门功课都有时间期限t.完成需要的时间d,如果完成的时间走出时间限制,就会被减 (d-t)个学分.问:按怎样 ...
- Hdu 4539 【状态DP】.cpp
题意: 一个炮兵可以攻打和他之间曼哈顿距离为2的士兵,给出你一块n*m的战场,告诉你哪些地方可以站人哪些地方不可以,问你最多可以安放多少个士兵? n <= 100, m <= 10 思路: ...
- hihocoder第42周 3*N骨牌覆盖(状态dp+矩阵快速幂)
http://hihocoder.com/contest/hiho42/problem/1 给定一个n,问我们3*n的矩阵有多少种覆盖的方法 第41周做的骨牌覆盖是2*n的,状态转移方程是dp[i] ...
- hdu 5135(2014广州—状态dp)
t题意:给你n条边,构造任意个三角形,一个三角形恰好只用3条边,每条边只能一次,求面积最大值 思路: 最开始想的是先排序从大到小取,但感觉并不怎么靠谱. 最多12条边,所以可以求出所有可能的三角形面积 ...
- Hdu 3001 Travelling 状态DP
题目大意 一次旅游,经过所有城市至少一次,并且任何一座城市访问的次数不能超过两次,求最小费用 每个城市最多访问两次,用状态0,1,2标识访问次数 把城市1~N的状态按照次序连接在一起,就组成了一个三进 ...
随机推荐
- sass_sass安装
你会不会因为有些事遇到各种各样的问题而搁置,直到把这个事情被耽误了几天.最近一直在弄sass这个东西,安装的过程中各种问题.sass是一个基于ruby环境开发的,安装sass之前得先把ruby给安装了 ...
- oracle 的number数据类型
NUMBER类型细讲:Oracle number datatype 语法:NUMBER[(precision [, scale])]简称:precision --> p scale ...
- mysql中的单引号/小数点/字符转换为数字/警告信息
我们准备玩点有趣的: select 一个数字: mysql from mysql.user; +---+ | +---+ | | | +---+ rows in set (0.00 sec) mysq ...
- perl中的默认变量与Z/map介绍
use v6; =begin pod @*ARGS 命令行参数, 不含脚本名 $*PROGRAM-NAME:当前运行脚本的相对路径 $*PROGRAM:当前运行脚本的文件名称 $*CWD:当前工作路径 ...
- WmiPrvSE.exe进程(WMI Provider Host)不能删除
WmiPrvSE.exe进程基本信息:程序厂商:微软® Microsoft Corp.进程描述:WMI Provider Host进程属性:Windows系统进程使用网络:是的启动情况:触发启动 来历 ...
- SQL语句语法简介
SQL命令一般分为DQL.DML.DDL几类: DQL:数据查询语句,基本就是SELECT查询命令,用于数据查询 DML:Data Manipulation Language的简称,即数据操纵语言,主 ...
- Windows 10又现新Bug,24核心竟卡成蜗牛
Windows 10又现新Bug,24核心竟卡成蜗牛 https://news.cnblogs.com/n/573996/
- 【NOIP2016】补题
今天突然想到自己居然还没把NOIP2016补完 简直是傻逼... 所以开始写 D1T1:模拟 D1T2:NOIP最难的一道题,首先求LCA 离线下,把观察员单独提出来 然后可以维护一个类似桶排序的东西 ...
- 神奇JavaScript框架---Top5
前言 个人观点,供您参考 观点源自作者的使用经验和日常研究 排名基于框架的受欢迎度, 语法结构, 易用性等特性 希望大家能够基于此视频找到最适合自己的框架 下面介绍的都是严格的前端框架和库 前言 To ...
- 2.Python3标准库--文本
(一)string:文本常量和模板 1.函数 import string ''' string模块在最早的Python版本中就已经有了.以前这个模块中提供的很多函数已经移植到str对象中,不过这个模块 ...