ZOJ 3182 Nine Interlinks

  题目大意:把一些带标号的环套到棍子上,标号为1的可以所以操作,标号i的根子在棍子上时,只有它标号比它小的换都不在棍子上,才能把标号为i+1的环,放在棍子上或者取下,问n个环全部放在棍子上需要的最少步骤?

  一个简单的递推题,可是我硬生生想复杂了还把队友带偏了,真是惭愧,还好源源的一发强大的思路,简简单单就过了,源源太强了,tql,orz。我们以4个环全放上棍子为例,我们要先把第3个环放上,然后又把前两个环都取下,然后才能放上第4个环,再又把前两个环都上。听起来有点复杂,我们想一下如果4个都已全放上,要把他们取下呢,那就是先把前两个取下,然后才能取下第4个环,然后再把前2个放上,最后把前3个全取下,虽然中间细节可能不同,但全放上和全取下的操作步骤是一样的。我之前就陷入了,觉得放第i个时,前i-1个环不一定都要存在,然后推来推去把自己推晕了,其实要把i-2个取下,第i-3个就得在,最终就是全在。递推式就是ans[i]=ans[i-1]*2ans[i-2]+1,ans[i]就是前i个环全放上,或者全取下的步骤。

#include<cstdio>
int ans[];
int main()
{
ans[]=,ans[]=;
for(int i=;i<=;i++)
ans[i]=ans[i-]+*ans[i-]+;
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",ans[n]);
}
return ;
}

推推推

HDU - 2842Chinese Rings

  题意一模一样,不同的是这题的数据量大,得把递推式用矩阵快速幂实现。

#include<cstdio>
#include<cstring>
#define ll long long
const ll mod=;
struct Node{
int r,c;
ll a[][];
Node(){
memset(a,,sizeof(a));
}
}A,T;
void init()
{
A.r=,A.c=;
memset(A.a,,sizeof(A.a));
A.a[][]=;A.a[][]=;A.a[][]=;
T.r=,T.c=;
memset(T.a,,sizeof(T.a));
T.a[][]=,T.a[][]=,T.a[][]=;
T.a[][]=T.a[][]=;
}
Node mul(Node n1,Node n2)
{
Node ans;
ans.r=n1.r,ans.c=n2.c;
for(int i=;i<n1.r;i++)
for(int j=;j<n2.c;j++)
for(int k=;k<n1.c;k++)
ans.a[i][j]=(ans.a[i][j]+(n1.a[i][k]*n2.a[k][j])%mod)%mod;
return ans;
}
Node pow(Node n,int b)
{
Node ans;
ans.r=n.r,ans.c=n.c;
for(int i=;i<;i++)
ans.a[i][i]=;
while(b)
{
if(b&)
ans=mul(ans,n);
n=mul(n,n);
b>>=;
}
return ans;
}
int main()
{
int x;
while(scanf("%d",&x)&&x)
{
init();
T=pow(T,x-);
A=mul(T,A);
printf("%lld\n",A.a[][]);
}
return ;
}

再推再推

  反思一下自己的状态,不能老熬夜了,身体是革命的本钱(主要是掉头发掉头发,我不想去主持非常勿扰)

  最后夸一波源源,临危不乱,机智出题,(还有昭哥的nb面积对称法求和,不过臭男人不需要夸)。

ZOJ 3182 HDU 2842递推的更多相关文章

  1. HDU 2842 (递推+矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...

  2. HDOJ(HDU).2044-2049 递推专题

    HDOJ(HDU).2044-2049 递推专题 点我挑战题目 HDU.2044 题意分析 先考虑递推关系:从1到第n个格子的时候由多少种走法? 如图,当n为下方格子的时候,由于只能向右走,所以有2中 ...

  3. "红色病毒"问题 HDU 2065 递推+找循环节

    题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=2065 递推类题目, 可以考虑用数学方法来做, 但是明显也可以有递推思维来理解. 递推的话基本就是状态 ...

  4. Children’s Queue HDU 1297 递推+大数

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1297 题目大意: 有n个同学, 站成一排, 要求 女生最少是两个站在一起, 问有多少种排列方式. 题 ...

  5. hdu 2044-2050 递推专题

    总结一下做递推题的经验,一般都开成long long (别看项数少,随便就超了) 一般从第 i 项开始推其与前面项的关系(动态规划也是这样),而不是从第i 项推其与后面的项的关系. hdu2044:h ...

  6. hdu 2604 递推 矩阵快速幂

    HDU 2604 Queuing (递推+矩阵快速幂) 这位作者讲的不错,可以看看他的 #include <cstdio> #include <iostream> #inclu ...

  7. hdu 4055 递推

    转自:http://blog.csdn.net/shiqi_614/article/details/7983298 题意:由数字1到n组成的所有排列中,问满足题目所给的n-1个字符的排列有多少个,如果 ...

  8. HDU 3123-GCC(递推)

    GCC Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Subm ...

  9. Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)

    题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...

随机推荐

  1. CTS & APIO 2019 游记

    写在前面 算是省选后的第一轮大考. 去年因为某些原因并没有参加 CTSC 以及 APIO,还是有些遗憾,所以希望今年能有所收获. 也希望今年的 CTS 能延续去年的出题风格,这样我还能苟一两个题. 然 ...

  2. (三十一)web 开发基础项目

    1. 编写index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  3. WebSocket协议探究(三):MQTT子协议

    一 复习和目标 1 复习 Nodejs实现WebSocket服务器 Netty实现WebSocket服务器(附带了源码分析) Js api实现WebSocket客户端 注:Nodejs使用的Socke ...

  4. T4模板使用笔记

    路径获取 ① 获取当前解决方案路径 string solutionsPath = Host.ResolveAssemblyReference("$(SolutionDir)"); ...

  5. 【前端】安装wampserver提示丢失MSVCR100.dll的解决方法

    先装Visual C++,再装wampserver 下载的时候请注意选择对应的32bit还是64bit的.然后安装. 再安装wamp

  6. centos禁止root用户ssh远程登录

    首先,我们要以root身份登录远程主机 vim指令编辑ssh配置文件,如 vim /etc/ssh/sshd_config 查找PermitRootLogin,把yes改为no 修改完配置需要重启ss ...

  7. 高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用

    国人在表述"大材小用"这个场景时,总喜欢用一些实物来类比,比如:高射炮打蚊子. 英国QF 3.7英寸(94mm)高射炮,战斗全重超过9.3吨,全长近5米,最大射程约18公里,最大射 ...

  8. 【微信网页直接下载app】微信跳转-微信浏览器中直接唤起本地浏览器和App

    文档传送门:https://github.com/EthanOrange/wechat-redirect demo: http://wxredirect.jslab.fun/call-app

  9. SOAP与restful webservice

    SOAP 什么是SOAP,我想不用多说,google一把满眼都是.其实SOAP最早是针对RPC的一种解决方案,简单对象访问协议,很轻量,同时作为应用协议可以基于多种传输协议来传递消息(Http,SMT ...

  10. shell 数组介绍

    平时的定义a=1;b=2;c=3,变量如果多了,再一个一个定义很繁琐,并且取变量值也很累.简单的说,数组就是各种数据类型的元素按一定顺序排列的集合. 数组就是把有限个元素变量或数组用一个名字命名,然后 ...