[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\)

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

#include<bits/stdc++.h>
#define il inline
#define rg register
#define ldb double
#define lst long long
#define rgt register int
#define N 150
using namespace std;
const int Inf=1e9;
il int MAX(rgt x,rgt y){return x>y?x:y;}
il int MIN(rgt x,rgt y){return x<y?x:y;}
il int read()
{
int s=0,m=0;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')m=1;ch=getchar();}
while( isdigit(ch))s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
return m?-s:s;
} int n;
struct PLUS
{
int S[150],len;
il void Print()
{
for(rgt i=len;i>=1;--i)
printf("%d",S[i]);puts("");
}
}dp[N],blank;
PLUS operator+(PLUS A,int x)
{
A.S[1]+=x;rgt nw=1;
while(A.S[nw]>=10)
++A.S[nw+1],A.S[nw]%=10,++nw;
if(A.S[A.len+1])++A.len;
return A;
}
PLUS operator*(PLUS A,int x)
{
rg PLUS mid=blank;
mid.len=A.len;
for(rgt i=1;i<=A.len;++i)
{
mid.S[i]+=A.S[i]*x;
mid.S[i+1]+=mid.S[i]/10;
mid.S[i]%=10;
}
while(mid.S[mid.len+1])
{
++mid.len;
mid.S[mid.len+1]+=mid.S[mid.len]/10;
mid.S[mid.len]%=10;
}return mid;
}
PLUS operator-(PLUS A,PLUS B)
{
for(rgt i=1;i<=A.len;++i)
{
A.S[i]-=B.S[i];
if(A.S[i]<0)
--A.S[i+1],A.S[i]+=10;
}return A;
} int main()
{
n=read();
dp[1].S[1]=1,dp[1].len=1;
dp[2].S[1]=5,dp[2].len=1;
for(rgt i=3;i<=n;++i)
dp[i]=((dp[i-1]*3)-dp[i-2])+2;
dp[n].Print();
return 0;
}

[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. node.js模块中exports和module.exports的区别

    Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文件不可见. CommonJS规范规定 ...

  2. 正则获取a标签和a标签中的href地址

    /(<\/?a.*?>)/ a标签 /<a\b.*?</a>/ 表式以"<a "(有空格) 开始 以"</a>" ...

  3. MongoDB学习笔记 1.1

    //1.安装MongoDB数据库 cd D:\Software\MongoDB\data\bin mongod --dbpath "D:\Software\MongoDB\data\db&q ...

  4. 15. ClustrixDB 管理数据分布

    本节使用的关键术语: Relation — ClustrixDB中的每个表都被称为“关系”. Representation — 在ClustrixDB中,每个索引都称为一个“Representatio ...

  5. Vue项目开发,nprogress进度条加载之超详细讲解及实战案例

    Nprogress的默认进度条很细,它的设计灵感主要来源于 谷歌,YouTube 他的安装方式也很简单,你可以有两种使用方式: 直接引入js和css文件 使用npm安装的的方式 直接引入: Npm安装 ...

  6. pythonCSV模块

    在爬虫过后会取得很多信息! 将信息存起来方法还很多中!今天提一下CSV模块 导入模块 import csv 这里先写个列表 rows = [['zhangsan',20],['lisi',22],[' ...

  7. [SPOJ20174]DIVCNT3 - Counting Divisors (cube):Min_25筛

    分析 首先,STO ywy OTZ,ywy TQL%%%! 说一下这道题用min_25筛怎么做. 容易发现,对于所有质数\(p\),都满足\(f(p)=4\),于是我们就可以直接通过\([1,x]\) ...

  8. sklearn 的 PolynomialFeatures 的用法

    官方文档:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html ...

  9. #学号 20175201张驰 《Java程序设计》第10周课下作业MyList

    参见附件,补充MyList.java的内容,提交运行结果截图(全屏) 课下推送代码到码云 public class MyList { public static void main(String [] ...

  10. 错误 NETSDK1007 找不到“E:\Project\MyProject\MyProject.Common\MyProject.Utility.csproj”的项目信息。这可以指示缺少一个项目引用。 MyProject.Data C:\Program Files\dotnet\sdk\2.2.107\Sdks\Microsoft.NET.Sdk\targets\Microsof

    因为对MyProject.Data引用的项目MyProject.Common进行了重命名为MyProject.Utility,导致这个错误 解决办法: 1.找到MyProject.Data中的E:\P ...