传送门

随便摸一发题解算了

打表找规律

前五个答案是

1 5 16 45 121

其实是

1^2 3^2-4 4^2 7^2-4 11^2

底数就是类似于斐波那契数列,还有偶数项要减4

#include<bits/stdc++.h>
#define LL long long
#define db double
#define il inline
#define re register using namespace std;
const int N=1e2+10;
il LL rd()
{
LL x=0,w=1;char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
struct Num
{
int w,a[210];
Num(){memset(a,0,sizeof(a)),w=1;}
il void print()
{
++w;
while(w>1&&!a[w]) --w;
for(int i=w;i;--i) printf("%d",a[i]);
}
Num operator + (const Num &bb) const
{
Num an;
an.w=max(w,bb.w);
for(int i=1;i<=an.w;++i) an.a[i]=a[i]+bb.a[i];
for(int i=1;i<=an.w;++i) an.a[i+1]+=an.a[i]/10,an.a[i]%=10;
an.w+=an.a[an.w+1]>0;
return an;
}
Num operator * (const Num &bb) const
{
Num an;
an.w=w+bb.w+1;
for(int i=1;i<=w;++i)
for(int j=1;j<=bb.w;++j)
an.a[i+j-1]+=a[i]*bb.a[j];
for(int i=1;i<=an.w;++i) an.a[i+1]+=an.a[i]/10,an.a[i]%=10;
while(!an.a[an.w]) --an.w;
return an;
}
}a[N];
int n; int main()
{
n=rd();
a[1].a[1]=1,a[2].a[1]=3;
for(int i=3;i<=n;++i) a[i]=a[i-1]+a[i-2];
a[n]=a[n]*a[n];
if(n%2==0)
{
a[n].a[1]-=4;
for(int i=1;a[n].a[i]<0;++i) --a[n].a[i+1],a[n].a[i]+=10;
}
a[n].print();
return 0;
}

没了?

其实正解是\(Matrix-tree\)

图已经给你了,一个环然后每个点连向中间这个点,这个图的生成树个数就是答案

自己随便搞一下就真没了

然后懒得再写高精了qwq

#include<bits/stdc++.h>
#define LL long long
#define db double
#define il inline
#define re register using namespace std;
const int N=1e2+10,mod=1e9+7; //诶嘿嘿
il LL rd()
{
LL x=0,w=1;char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
il LL gg(int a[N][N],int n)
{
LL ans=1;
for(int i=1;i<=n;++i)
for(int j=i+1;j<=n;++j)
while(a[j][i])
{
LL x=a[i][i]/a[j][i];
for(int k=i;k<=n;++k) a[i][k]-=a[j][k]*x;
ans=mod-ans;
for(int k=i;k<=n;++k) swap(a[i][k],a[j][k]);
}
for(int i=1;i<=n;++i) ans=(ans*(a[i][i]%mod+mod)%mod)%mod;
return ans;
}
int n,a[N][N]; int main()
{
n=rd();
for(int i=1;i<=n;++i) a[i][i]=3;
a[n+1][n+1]=n;
for(int i=1;i<=n;++i) --a[n+1][i],--a[i][n+1];
for(int i=1;i<n;++i) --a[i][i+1],--a[i+1][i];
--a[1][n],--a[n][1];
printf("%lld\n",gg(a,n));
return 0;
}

luogu P2144 [FJOI2007]轮状病毒的更多相关文章

  1. 洛谷 P2144 [FJOI2007]轮状病毒

    P2144 [FJOI2007]轮状病毒 题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个\(n\)轮状基由圆环上\(n\)个不同的基原子和圆心的一个核原子构成.\(2\)个原子之 ...

  2. 洛谷P2144 [FJOI2007]轮状病毒

    可以用Matrix-Tree定理,然而被卡精度 #include<cstdio> #include<cstdlib> #include<algorithm> #in ...

  3. P2144 [FJOI2007]轮状病毒

    题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个n轮状基由圆环上n个不同的基原子和圆心的一个核原子构成.2个原子之间的边表示这2个原子之间的信息通道,如图1. n轮状病毒的产生规律 ...

  4. 【洛谷】2144:[FJOI2007]轮状病毒【高精度】【数学推导??(找规律)】

    P2144 [FJOI2007]轮状病毒 题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个n轮状基由圆环上n个不同的基原子和圆心的一个核原子构成.2个原子之间的边表示这2个原子之间 ...

  5. 【bzoj1002】[FJOI2007]轮状病毒

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4381  Solved: 2393[Submit][Statu ...

  6. 【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度

    1002: [FJOI2007]轮状病毒 Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同 ...

  7. bzoj 1002 [FJOI2007]轮状病毒 高精度&&找规律&&基尔霍夫矩阵

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2234  Solved: 1227[Submit][Statu ...

  8. 生成树的计数(基尔霍夫矩阵):BZOJ 1002 [FJOI2007]轮状病毒

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3928  Solved: 2154[Submit][Statu ...

  9. BZOJ 1002 [FJOI2007]轮状病毒

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3106  Solved: 1724[Submit][Statu ...

随机推荐

  1. JBoss/Wildfly 配置SQLserver服务器

    JBoss/Wildfly 配置SQLserver服务器 http://blog.csdn.net/haitaolang/article/details/60467118 wildfly standa ...

  2. js,jquery 获取滚动条高度和位置, 元素距顶部距离

    一,获取滚动条高度和位置 jQuery 获取览器显示区域的高度: $(window).height();  获取浏览器显示区域的宽度:$(window).width(); 获取页面的文档高度:$(do ...

  3. 洛谷P5112 FZOUTSY

    卡map还行.....手写hash表即可. 我一开始以为这个k会变......在sam上想各种奇技淫巧. k不变就是问一段区间有多少对长度为k的子串相同. 然后hash把子串转化为数字,就是区间有多少 ...

  4. 【POJ2226】Muddy Fields

    题目大意:给定一个 N*M 的图,图中有一些格子不能被任何东西覆盖,现有一些宽度为 1,长度任意的骨牌覆盖这些可以被覆盖的格子,骨牌之间可以重叠,求将所有可以被覆盖的格子覆盖所需的最小骨牌数是多少. ...

  5. request 的介绍使用属性

    上下文:相当于一个容器,保存了 Flask 程序运行过程中的一些信息. Flask中有两种上下文,请求上下文和应用上下文 请求上下文(request context) 在 flask 中,可以直接在视 ...

  6. 第四篇-以ConstraintLayout进行Android界面设计

    此文章基于第三篇. 一.新建一个layout.xml文件,创建方法不再赘述,在Design界面右击LinearLayout,点击Convert LinearLayout to ConstraintLa ...

  7. 多文件协作,extern、static、头文件

    多个cpp文件协同工作.使用外部函数.变量时,必须先声明再使用.声明外部函数(一般在main.cpp中),extern可省略(主函数中默认可访问外部函数)extern void RectArea(); ...

  8. php-resque 轻量级队列

    一:简介 github地址:https://github.com/chrisboulton/php-resque 这个轻量级队列是由 Ruby 开发的 Resque 启发而来的. 注意:1. php- ...

  9. ZooKeeper集群详细安装教程

    1. 安装JDK 1.1 官网下载JDK 进入网址<a href="http://www.oracle.com/technetwork/java/javase/downloads/jd ...

  10. Mac 上有哪些值得推荐的软件?冷门小众软件但实用

    确实Mac上有很多小众.冷门,但却是十分实用.值得推荐的工具,小编针对用的比较多的软件,整理了一些,希望有帮助. The Unarchive:解压缩工具 macOS 对于压缩文件的处理不是很好.如果你 ...