1002: [FJOI2007]轮状病毒

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 3045  Solved: 1687
[Submit][Status][Discuss]

Description

给定n(N<=100),编程计算有多少个不同的n轮状病毒。

Input

第一行有1个正整数n。

Output

将编程计算出的不同的n轮状病毒数输出

Sample Input

3

Sample Output

16
【题解】
我就一个蒟蒻写什么题解呢= =
好了切入正题
请看下列解释

然而我并不懂基xxxxx矩阵,于是我在JSOI的时候硬推了一把

我做了大死……于是我jsoi就挂了TAT

就差不多这上面的递推式吧

某聚聚:我就推了10分钟;

我:我推了俩小时。。

哎差距啊= =

哦还有一件事,要上高精度。。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct bn {
 4     int len;
 5     int k[110];
 6 }f[101];
 7 // f(i)=3f(i-1)-f(i-2)+2
 8 bn mul(bn a) {
 9     bn ans;
10     memset(ans.k,0,sizeof(ans.k));
11     ans.len=a.len;
12     for (int i=1;i<=a.len;++i) {
13         ans.k[i]+=a.k[i]*3;
14         if (ans.k[i]>=10) {
15             ans.k[i+1]+=ans.k[i]/10;
16             ans.k[i]%=10;
17         }
18     }
19     if (ans.k[ans.len+1]>0) ans.len++;
20     return ans;
21 }
22 bn addtwo(bn a) {
23     bn ans;
24     ans.len=a.len;
25     memset(ans.k,0,sizeof(ans.k));
26     for (int i=1;i<=ans.len;++i)
27         ans.k[i]=a.k[i];
28     ans.k[1]+=2;
29     int ka=1;
30     while(ans.k[ka]>=10) {
31         ans.k[ka+1]+=ans.k[ka]/10;
32         ans.k[ka++]%=10;
33     }
34     if (ka>ans.len) ans.len=ka;
35     return ans;
36 }
37 bn xminus(bn a, bn b) {
38     bn ans;
39     ans.len=a.len;
40     memset(ans.k,0,sizeof(ans.k));
41     for (int i=1;i<=a.len;++i) {
42         ans.k[i]+=a.k[i]-b.k[i];
43         if (ans.k[i] < 0) {
44             ans.k[i]+=10;
45             ans.k[i+1]--;
46         }
47     }
48     while(ans.k[ans.len]==0) ans.len--;
49     return ans;
50 }
51 int main() {
52     int n; scanf("%d",&n);
53     //for (int i=1;i<=n;++i) memset(f[i].k,0,sizeof(f[i].k));
54     f[1].k[1]=1;f[2].k[1]=5;f[1].len=1;f[2].len=1;
55     //bn ans=xminus(mul(f[2]),f[1]);
56     //for (int i=ans.len;i>=1;--i) printf("%d",ans.k[i]);
57     for (int i=3;i<=n;++i) f[i]=addtwo(xminus(mul(f[i-1]),f[i-2]));
58     //f[n]=mul(f[2]);
59     for (int i=f[n].len;i>=1;--i) printf("%d",f[n].k[i]);
60     return 0;
61 }

View Code

转载于:https://www.cnblogs.com/TonyNeal/p/bzoj1002.html

[BZOJ 1002] [FJOI 2007] 轮状病毒相关推荐

  1. BZOJ 1002 1003 1007 被屠记录

    为什么我不是一题一题写的呢..因为太弱了!某些题目就跳过去了. 主要跳过去的是数学题,Octgap201说过我有必杀技-----trigon对题目使用了 who cares 效果拔群! ....... ...

  2. bzoj 1002: [FJOI2007]轮状病毒

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 5373  Solved: 2924 [Submit][Sta ...

  3. bzoj - 1002 【Kirchhoff矩阵】

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 4746  Solved: 2597 [Submit][Sta ...

  4. ●BZOJ 4408 [Fjoi 2016]神秘数

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 题解: 主席树 首先,对于一些数来说, 如果可以我们可以使得其中的某些数能够拼出 1- ...

  5. Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 177  Solved: 128 [Submit][Stat ...

  6. BZOJ 1032 JSOI 2007 祖码Zuma 区间DP

    题目大意:依照祖玛的玩法(任意选颜色),给出一段区间.问最少用多少个球可以把全部颜色块都消除. 思路:把输入数据依照连续的块处理.保存成颜色和数量.然后用这个来DP.我们知道,一个单独的块须要两个同样 ...

  7. BZOJ 1631==USACO 2007== POJ 3268 Cow Party奶牛派对

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 19226   Accepted: 8775 Description One ...

  8. BZOJ 4408: [Fjoi 2016]神秘数(可持久化线段树)

    题目描述 http://www.lydsy.com/JudgeOnline/problem.php?id=4408 题目大意:求最小不能被一段区间中某些数的和表示的数.(还是看题面吧) 思路 可持久化 ...

  9. BZOJ 1093 ZJOI 2007 最大半连通子图 强联通分量+拓扑图DP

    今天是放假的第一天(不说什么废话了) 什么是半连通子图?就是此图中包含的所有点两两点之间至少有一条单向路径. 题目问了两个问题 1.最大半连通子图的大小 2.最大半连通子图的个数 好了,这个问题看上去 ...

最新文章

  1. 玩转iPhone网络通讯之BSD Socket篇
  2. PHP PDO 预处理语句与存储过程
  3. java jwt 验证_教程:用Java创建和验证JWT
  4. win2012iis php,Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
  5. 博客园去除文章页底部的推广链接
  6. ARC075 F.Mirrored
  7. phpmyadmin-错误:配置文件权限错误,不应任何用户都能修改!这里有答案
  8. 为什么摩根大通「发币」标志着企业区块链应用元年?
  9. apk一键脱壳工具_一键新机!强大的抹机王来了!
  10. 淘客APP有哪些功能?
  11. Windows聚焦壁纸保存方法
  12. 可视化:小型有向网络HTML自动生成器
  13. 网络创业成功的7堂课(读书笔记)
  14. 2个或2个以上路由器串联上网,在同一网段
  15. [读书笔记]固定收益证券 第三版 Fixed income securities
  16. android pad课件制作软件,平板电脑可以做ppt吗
  17. ORA-04063: package body “SYS.DBMS_DATAPUMP“ has errors
  18. mac 卸载php版本,mac osx 更改自带php版本
  19. TextView与EditText
  20. 内蒙古邮政计算机考试题目,内蒙古邮政储蓄笔试

热门文章

  1. linux下安装sbt_如何在Linux上安装SBT
  2. three.ar.js_我们如何通过AR.js使产品吉祥物栩栩如生
  3. 用拓扑排序检测有向图中是否有环
  4. 敏捷过程、极限编程和SCRUM的关系
  5. 笔试算法题(58):二分查找树性能分析(Binary Search Tree Performance Analysis)
  6. 王豪:HW265到“HW266”
  7. css3中的box-sizing属性
  8. CentOS 7 SSH 免密登录的方法
  9. OpenStack 和 Cloud Foundry
  10. puppet(1.7-2.1)