[FJOI2007]轮状病毒 题解(dp(找规律)+高精度)

标签:题解

阅读体验:https://zybuluo.com/Junlier/note/1335733

没什么好说的,直接把规律找出来,有两种规律(据说还有多种dp),再套个高精度

\(First\)

\(f[1]=1,f[2]=5,f[i]=3×f[i-1]-f[i-2]+2\)

就直接写个高精+低精和高精×低精和高精-高精就行了

\(Second\)

\(f[1]=1,f[2]=3,f[i]=f[i-1]+f[i-2]\)

\(i\)为奇数时,\(g[i]=f[i]^2\)

\(i\)为偶数时,\(g[i]=f[i]^2-2\)

这个需要高精+高精,高精×高精,高精-低精。。。

\(code\)

反正这就是个暴力题啦,只要找得到规律(我反正将近半个小时找到第二个规律,但是上网看题解写了第一种的)

  1. #include<bits/stdc++.h>
  2. #define il inline
  3. #define rg register
  4. #define ldb double
  5. #define lst long long
  6. #define rgt register int
  7. #define N 150
  8. using namespace std;
  9. const int Inf=1e9;
  10. il int MAX(rgt x,rgt y){return x>y?x:y;}
  11. il int MIN(rgt x,rgt y){return x<y?x:y;}
  12. il int read()
  13. {
  14. int s=0,m=0;char ch=getchar();
  15. while(!isdigit(ch)){if(ch=='-')m=1;ch=getchar();}
  16. while( isdigit(ch))s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
  17. return m?-s:s;
  18. }
  19. int n;
  20. struct PLUS
  21. {
  22. int S[150],len;
  23. il void Print()
  24. {
  25. for(rgt i=len;i>=1;--i)
  26. printf("%d",S[i]);puts("");
  27. }
  28. }dp[N],blank;
  29. PLUS operator+(PLUS A,int x)
  30. {
  31. A.S[1]+=x;rgt nw=1;
  32. while(A.S[nw]>=10)
  33. ++A.S[nw+1],A.S[nw]%=10,++nw;
  34. if(A.S[A.len+1])++A.len;
  35. return A;
  36. }
  37. PLUS operator*(PLUS A,int x)
  38. {
  39. rg PLUS mid=blank;
  40. mid.len=A.len;
  41. for(rgt i=1;i<=A.len;++i)
  42. {
  43. mid.S[i]+=A.S[i]*x;
  44. mid.S[i+1]+=mid.S[i]/10;
  45. mid.S[i]%=10;
  46. }
  47. while(mid.S[mid.len+1])
  48. {
  49. ++mid.len;
  50. mid.S[mid.len+1]+=mid.S[mid.len]/10;
  51. mid.S[mid.len]%=10;
  52. }return mid;
  53. }
  54. PLUS operator-(PLUS A,PLUS B)
  55. {
  56. for(rgt i=1;i<=A.len;++i)
  57. {
  58. A.S[i]-=B.S[i];
  59. if(A.S[i]<0)
  60. --A.S[i+1],A.S[i]+=10;
  61. }return A;
  62. }
  63. int main()
  64. {
  65. n=read();
  66. dp[1].S[1]=1,dp[1].len=1;
  67. dp[2].S[1]=5,dp[2].len=1;
  68. for(rgt i=3;i<=n;++i)
  69. dp[i]=((dp[i-1]*3)-dp[i-2])+2;
  70. dp[n].Print();
  71. return 0;
  72. }

[FJOI2007]轮状病毒 题解(dp(找规律)+高精度)的更多相关文章

  1. bzoj 1002 [FJOI2007]轮状病毒——打表找规律

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1002 看 Zinn 的博客:https://www.cnblogs.com/Zinn/p/9 ...

  2. bzoj1002 [FJOI2007]轮状病毒——找规律+高精度

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1002 打表找规律,似乎是这样:https://blog.csdn.net/fzhvampir ...

  3. hdu 2604 Queuing dp找规律 然后矩阵快速幂。坑!!

    http://acm.hdu.edu.cn/showproblem.php?pid=2604 这题居然O(9 * L)的dp过不了,TLE,  更重要的是找出规律后,O(n)递推也过不了,TLE,一定 ...

  4. HDU 1028 Ignatius and the Princess III (母函数或者dp,找规律,)

    Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  5. 【BZOJ】1002: [FJOI2007]轮状病毒(DP+规律+高精度)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1002 其实我还是看题解的,而且看了题解也没明白那公式怎么来的T_T,先水过了先把....以后研究一下 ...

  6. BZOJ 1002 FJOI 2007 轮状病毒 暴力+找规律+高精度

    题目大意: 思路:基尔霍夫矩阵求生成树个数,不会. 可是能够暴力打表.(我才不会说我调试force调试了20分钟... CODE(force.cc): #include <cstdio> ...

  7. [bzoj1002][FJOI2007]轮状病毒_递推_高精度

    轮状病毒 bzoj-1002 FJOI-2007 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2 ...

  8. loj6172 Samjia和大树(树形DP+找规律)

    题目: https://loj.ac/problem/6172 分析: 首先容易得出这样的dp式子 然后发现后面那个Σ其实是两段区间,可以用总和减去中间一段区间表示,所以只要维护个前缀和就ok了 这样 ...

  9. ZOJ-3929 Deque and Balls (DP+找规律)

    题目大意:n个数,每个数的大小都在1~n之间.操作n次,第 i 次将第 i 个数放到一个双端队列里面,放到队列两端的概率是相等的.问操作n次之后双端队列中元素满足xi>xi+1的对数的期望,输出 ...

随机推荐

  1. 树莓派开机自动启动Chomium浏览器并打开指定网页

    树莓派开机自动启动Chomium浏览器并打开指定网页 cd /home/pi/.config mkdir autostart cd autostart vi my.desktop [Desktop E ...

  2. 【crontab】误删crontab及其恢复

    中秋节快到了,首先祝自己中秋快乐. 昨天下午六点,心里正想着加完一个crontab就可以下班了.本来想执行 crontab -e的,没想到手一抖就输入了crontab ,然后就进入了下面这个样子.

  3. vmware哪个版本好用

    这个问题要根据你的物理机操作系统而定,如果你电脑是xp,就选择vmw7.1.6:如果你电脑是win7,win8,win8.1,就选择vmw10.0.1.不要去理会vmw8.vmw9这些都是vmw10的 ...

  4. linux-系统启动流程-7

    1,BIOS开机自检,检查cpu硬件及开机启动顺序,查找第一个磁盘磁头的MBR信息并加载BOOtloader,然后将控制权交与bootloader 2, GRUB GRUB(Grand Unified ...

  5. JSON.parse 测试

    第一种 报错 var t = JSON.parse(""); console.log(t); 第二种 正常 var t = JSON.parse('{"AA": ...

  6. #417 Div2 Problem B Sagheer, the Hausmeister (DFS && 枚举)

    题目链接:http://codeforces.com/contest/812/problem/B 题意 : 给出一个 n (1 ≤ n ≤ 15)层的教学楼, 每一层楼包含 m (1 ≤ m ≤ 10 ...

  7. 官方转译:截止2018-12-10,chromedriver与chrome对应关系表

    谷歌驱动下载地址: http://npm.taobao.org/mirrors/chromedriver/ http://chromedriver.storage.googleapis.com/ind ...

  8. Vue.use源码分析(转)+如何封装一个组件

    封装一个组件:https://www.jianshu.com/p/89a05706917a 我想有过vue开发经验的,对于vue.use并不陌生.当使用vue-resource或vue-router等 ...

  9. 在docker容器中调用docker命令

    宿主容器均为CentOS7.6.1810 docker run -it --rm \ -v /usr/bin/docker:/usr/bin/docker \ -v /var/run/docker.s ...

  10. java中的char,short,int,long占几个字节

    1:“字节”是byte,“位”是bit : 2: 1 byte = 8 bit : char 在java中是2个字节.java采用unicode,2个字节(16位)来表示一个字符. short 2个字 ...