题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842

题目意思:一把一个n连环的前n个拿下来,一个个n连环,要把第k个拿下来,需要把前n-2个拿下来,并留下第n-1个环,然后花一步把第n个拿下来,然后为了把第n-1个环拿下来,我们又需要把前n-2个放回去(逆过程),从而把这个问题转化成把前n-1个环拿下来。

思路:根据上面的分析,我们很容易的可以写出递推式子,f[n]=2*f[n-2]+f[n-1]+1,一个带常数项的矩阵快速幂,题目意思有点难懂,忽略了,要把前n-2个放回去,还是逆过程,一直没有搞得特别懂,感觉有点没道理。

代码:

  1. //Author: xiaowuga
  2. #include <bits/stdc++.h>
  3. #define maxx INT_MAX
  4. #define minn INT_MIN
  5. #define inf 0x3f3f3f3f
  6. #define n 3
  7. #define MOD 200907
  8. using namespace std;
  9. typedef long long ll;
  10. struct Matrix{
  11. ll mat[][];
  12. Matrix operator * (const Matrix & m) const{
  13. Matrix tmp;
  14. for(int i=;i<n;i++)
  15. for(int j=;j<n;j++){
  16. tmp.mat[i][j]=;
  17. for(int k=;k<n;k++){
  18. tmp.mat[i][j]+=mat[i][k]*m.mat[k][j]%MOD;
  19. tmp.mat[i][j]%=MOD;
  20. }
  21. }
  22. return tmp;
  23. }
  24. };
  25. Matrix POW(Matrix m,ll k){
  26. Matrix ans;
  27. memset(ans.mat,,sizeof(ans.mat));
  28. for(int i=;i<n;i++) ans.mat[i][i]=;
  29. while(k){
  30. if(k&) ans=ans*m;
  31. k/=;
  32. m=m*m;
  33. }
  34. return ans;
  35. }
  36. int main() {
  37. ios::sync_with_stdio(false);cin.tie();
  38. ll num;
  39. while(cin>>num&&num){
  40. Matrix m;
  41. memset(m.mat,,sizeof(m.mat));
  42. m.mat[][]= m.mat[][]= m.mat[][]= m.mat[][]=;
  43. m.mat[][]=;
  44. ll f[]={,,};
  45. Matrix ans;
  46. if(num<=) cout<<(num==?:)<<endl;
  47. else{
  48. ans=POW(m,num-);
  49. ll sum=;
  50. for(int i=;i<n;i++){
  51. sum+=ans.mat[][i]*f[i]%MOD;
  52. }
  53. cout<<sum%MOD<<endl;
  54. }
  55. }
  56. return ;
  57. }

HDU2842—Chinese Rings的更多相关文章

  1. Chinese Rings hdu 2842 矩阵快速幂

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

  2. Chinese Rings

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

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

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

  4. Chinese Rings (九连环+矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目: Problem Description Dumbear likes to play th ...

  5. hdu 2842 Chinese Rings

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

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

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

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

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

  8. hdu 2842 Chinese Rings 矩阵快速幂

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

  9. HDU2842 矩阵乘法

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

随机推荐

  1. C++11新特性实验

    #include <iostream> #include <vector> #include <map> #include <string> #incl ...

  2. UIButton 按钮控件-IOS开发 (实例)

    转自:http://justcoding.iteye.com/blog/1467999 UIButton是一个标准的UIControl控件,所以如果你对UIControl不甚了解还是先看一下我的另一篇 ...

  3. js基本知识1

    Javascript 作用 1. 网页特效 2. 用户交互 3. 表单验证 Js 就是可以用来控制 结构 和 样式 . 1.2 体验js 认识常用的三个输出语句. 都属于 js 内置对象 . 大家买手 ...

  4. activiti链接

    工作流学习——重要概念扫盲篇一步曲 http://blog.csdn.NET/zwk626542417/article/details/46592471

  5. java 清除 bom

    参考工具  http://akini.mbnet.fi/java/unicodereader/ Utf8BomRemover 清除bom的方法 package cn.com.do1.component ...

  6. noj1475(递推题)统计多少个1

    http://acm.nbut.cn/Problem/view.xhtml?id=1475 题意:给出一个数,需要你统计在这个数范围内有多少个1........ 思路:从高位到低位计算,例如1312 ...

  7. insert,update和delete下的注入

    PS:刚开始看到这个注入方式的时候,问米哥:“为啥updatexml就足以报错了,为啥还要使用insert?”知道答案的我觉得问了一个傻蛋的问题.不过没关系.慢慢积累.答案很简单,并不是所有的注入点程 ...

  8. linux 域和xenomai 实时域之间的交互

    /* * XDDP-based RT/NRT threads communication demo. * * Real-time Xenomai threads and regular Linux t ...

  9. C#string数组转换到int数组并得到最大最小值

    string[] input = { "1", "2", "3", "4", "5", " ...

  10. python的post请求抓取数据

    python通过get方式,post方式发送http请求和接收http响应-urllib urllib2 python通过get方式,post方式发送http请求和接收http响应-- import  ...