要拆第n个环要求保留第n-1拆除前n-2

对于n,先拆掉n-2再去掉n再放回n-2,然后规模降为n-1

f(n)=2f(n-2)+f(n-1)+1

  1. inline ll mod(ll a){return a%MOD;}
  2. struct Matrix{
  3. ll mt[5][5],r,c;
  4. void init(int rr,int cc,bool flag=0){
  5. r=rr;c=cc;
  6. memset(mt,0,sizeof mt);
  7. if(flag) rep(i,1,r) mt[i][i]=1;
  8. }
  9. Matrix operator * (const Matrix &rhs)const{
  10. Matrix ans; ans.init(r,rhs.c);
  11. rep(i,1,r){
  12. rep(j,1,rhs.c){
  13. int t=max(r,rhs.c);
  14. rep(k,1,t){
  15. ans.mt[i][j]+=mod(mt[i][k]*rhs.mt[k][j]);
  16. ans.mt[i][j]=mod(ans.mt[i][j]);
  17. }
  18. }
  19. }
  20. return ans;
  21. }
  22. };
  23. Matrix fpw(Matrix A,ll n){
  24. Matrix ans;ans.init(A.r,A.c,1);
  25. while(n){
  26. if(n&1) ans=ans*A;
  27. n>>=1;
  28. A=A*A;
  29. }
  30. return ans;
  31. }
  32. int bas[4][4]={
  33. {0,0,0,0},
  34. {0,1,2,1},
  35. {0,1,0,0},
  36. {0,0,0,1}
  37. };
  38. int bas2[4]={0,2,1,1};
  39. ll n;
  40. int main(){
  41. Matrix A;A.init(3,3);
  42. rep(i,1,3) rep(j,1,3) A.mt[i][j]=bas[i][j];
  43. Matrix b; b.init(3,1);
  44. rep(i,1,3) b.mt[i][1]=bas2[i];
  45. while(cin>>n){
  46. if(n==0)break;
  47. if(n<=2){
  48. if(n==1) println(1);
  49. if(n==2) println(2);
  50. continue;
  51. }
  52. Matrix res=fpw(A,n-2); res=res*b;
  53. ll ans=mod(res.mt[1][1]);
  54. println(ans);
  55. }
  56. return 0;
  57. }

HDU - 2842的更多相关文章

  1. HDU 2842 Chinese Rings(矩阵高速功率+递归)

    职务地址:HDU 2842 这个游戏是一个九连环的游戏. 如果当前要卸下前n个环.由于要满足前n-2个都卸下,所以要先把前n-2个卸下.须要f(n-2)次.然后把第n个卸下须要1次,然后这时候要卸下第 ...

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

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

  3. ZOJ 3182 HDU 2842递推

    ZOJ 3182 Nine Interlinks 题目大意:把一些带标号的环套到棍子上,标号为1的可以所以操作,标号i的根子在棍子上时,只有它标号比它小的换都不在棍子上,才能把标号为i+1的环,放在棍 ...

  4. hdu 2842 Chinese Rings

    点击打开hdu2842 思路: 矩阵快速幂 分析: 1 题目的意思是给定n个环,和一些规则要把所有的环全部拆下最少需要的步数 2 题目规定如果要拆第n个环,那么第n-1个要挂着,n-2环要被拆下.那么 ...

  5. Chinese Rings hdu 2842 矩阵快速幂

    Chinese Rings Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  6. HDU 2842 Chinese Rings(常数矩阵)

    Chinese Rings 转载自:点这里 [题目链接]Chinese Rings [题目类型]常数矩阵 &题意: 一种中国环,解开第k个环需要先解开全部的前(k-2)个环,并留有第(k-1) ...

  7. hdu 2842(矩阵高速幂+递推)

    题意:一个中国环的游戏,规则是一个木棒上有n个环.第一个环是能够任意放上或拆下的,剩下的环x假设想放上或拆下必须前一个环x-1是放上的且前x-2个环所有是拆下的,问n个环最少多少次操作能够所有拆掉. ...

  8. HDU 2842 Chinese Rings( 递推关系式 + 矩阵快速幂 )

    链接:传送门 题意:解 N 连环最少步数 % 200907 思路:对于 N 连环来说,解 N 连环首先得先解 N-2 连环然后接着解第 N 个环,然后再将前面 N-2 个环放到棍子上,然后 N 连环问 ...

  9. hdu 2842 Chinese Rings 矩阵快速幂

    分析: 后面的环能不能取下来与前面的环有关,前面的环不被后面的环所影响.所以先取最后面的环 设状态F(n)表示n个环全部取下来的最少步数 先取第n个环,就得使1~n-2个环属于被取下来的状态,第n-1 ...

随机推荐

  1. PHP 5.5环境配置

    php5.5 + apache2.4 安装配置 1 2 3 4 5 6 7 分步阅读 php5.5 做了大量的更新,在与apache搭配的时候如何选择也很有讲究,这里我们以64位 php5.6 和 A ...

  2. Mock Server实践

    转载自 https://tech.meituan.com/mock-server-in-action.html 背景 在美团服务端测试中,被测服务通常依赖于一系列的外部模块,被测服务与外部模块间通过R ...

  3. 数据库 MySQL 之 数据操作

    数据库 MySQL 之 数据操作 一.MySQL数据类型介绍 MySQL支持多种类型,大致可以分为四类:数值.字符串类型.日期/时间和其他类型. ①二进制类型 bit[(M)] 二进制位(101001 ...

  4. Oracle数据库之日期函数

    今天给大家介绍一下oracle数据中的日期函数的用法.废话不多说,我们看一下oracle给我们提供了那些函数? 1.sysdate 用途:获取当前系统时间. 2.to_date('字符类型','日期类 ...

  5. CORS同源策略

    同源策略以及跨域资源共享在大部分情况下针对的是Ajax请求.同源策略主要限制了通过XMLHttpRequest实现的Ajax请求,如果请求的是一个“异源”地址,浏览器将不允许读取返回的内容. 支持同源 ...

  6. HDU 4081 Peach Blossom Spring (最小生成树+dfs)

    题意:给定一个 n 个点和相应的权值,要求你用 n-1 条边连接起来,其中一条边是魔法边,不用任何费用,其他的边是长度,求该魔法边的两端的权值与其他边费用的尽量大. 析:先求出最小生成树,然后再枚举每 ...

  7. Hibernate不能建表的问题

    项目使用hibernate进行正向工程建立表,各项配置都正确,但就是不能生成对应的表,这就纳闷了!! 类: public class Market { private Long id; private ...

  8. SharePoint 2013备份方法整理

    关于SharePoint备份 SharePoint的备份是一个数据副本,主要用于在系统出现故障后还原和恢复该数据. 备份的工具主要有以下几种(写的不全,欢迎补充.) SharePoint管理中心的备份 ...

  9. centos7 .net core 使用supervisor守护进程,可以后台运行

    1.安装supervisor yum install supervisor 2.配置supervisor vi /etc/supervisord.conf 拉到最后,这里的意思是 /etc/super ...

  10. asp.net core 外部认证多站点模式实现

    PS:之前因为需要扩展了微信和QQ的认证,使得网站是可以使用QQ和微信直接登录.github 传送门 .然后有小伙伴问,能否让这个配置信息(appid, appsecret)按需改变,而不是在 Con ...