洛谷P2144 [FJOI2007]轮状病毒
可以用Matrix-Tree定理,然而被卡精度
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<iostream>
#define MAXN 100+10
#define EPS 0.00000001
using namespace std;
bool zero(double x){
return (-EPS<x&&x<EPS);
}
double det(double a[MAXN][MAXN],int n){
double b[MAXN][MAXN],ret=;
int sign=;
memcpy(b,a,sizeof(b));
for(int i=;i<=n;i++){
if(zero(b[i][i])){
int k=i;
while(zero(b[k][i]))k++;
if(k>n){
return ;
}
for(int j=i;j<=n;j++){
swap(b[k][j],b[i][j]);
}
sign++;
}
ret*=b[i][i];
for(int j=i+;j<=n;j++){
b[i][j]/=b[i][i];
}
for(int k=i+;k<=n;k++){
for(int j=i+;j<=n;j++){
b[k][j]-=b[k][i]*b[i][j];
}
}
}
if(sign&){
ret=-ret;
}
return ret;
}
double A[MAXN][MAXN];
int v[MAXN];
int n;
void init(){
v[]=n;
n++;
for(int i=;i<=n;i++){
v[i]=;
}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(i==j){
A[i][j]=v[i];
}
else{
if(i==||j==||i==n&&j==||i==&&j==n){
A[i][j]=-;
}
else if(i-j==||j-i==){
A[i][j]=-;
}
else{
A[i][j]=;
}
}
}
}
}
void solve(){
printf("%.0f\n",det(A,n-));
}
int main()
{
scanf("%d",&n);
if(n==){
printf("1\n");
return ;
}
if(n==){
printf("5\n");
return ;
}
init();
solve();
return ;
}
于是乎就乱推公式,得到
加上高精度即可
洛谷P2144 [FJOI2007]轮状病毒的更多相关文章
- 洛谷 P2144 [FJOI2007]轮状病毒
P2144 [FJOI2007]轮状病毒 题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个\(n\)轮状基由圆环上\(n\)个不同的基原子和圆心的一个核原子构成.\(2\)个原子之 ...
- 洛谷 P2144 BZOJ 1003 [FJOI2007]轮状病毒
题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个n轮状基由圆环上n个不同的基原子和圆心的一个核原子构成.2个原子之间的边表示这2个原子之间的信息通道,如图1. n轮状病毒的产生规律 ...
- P2144 [FJOI2007]轮状病毒
题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个n轮状基由圆环上n个不同的基原子和圆心的一个核原子构成.2个原子之间的边表示这2个原子之间的信息通道,如图1. n轮状病毒的产生规律 ...
- luogu P2144 [FJOI2007]轮状病毒
传送门 随便摸一发题解算了 打表找规律 前五个答案是 1 5 16 45 121 其实是 1^2 3^2-4 4^2 7^2-4 11^2 底数就是类似于斐波那契数列,还有偶数项要减4 #includ ...
- 【洛谷】2144:[FJOI2007]轮状病毒【高精度】【数学推导??(找规律)】
P2144 [FJOI2007]轮状病毒 题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个n轮状基由圆环上n个不同的基原子和圆心的一个核原子构成.2个原子之间的边表示这2个原子之间 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
随机推荐
- C语言第九次作业
一.PTA实验作业 题目1:统计大于等于平均分人数 1. 本题PTA提交列表 2.设计思路 float i为循环变量,sum=0,count=0来表示所求人数 float *p=s来储存首地址 for ...
- Django 个性化管理员站点
from django.contrib import admin # Register your models here. from .models import Moment class Momen ...
- Hibernate之Hibernate的下载与安装
Hibernate用法十分简单,当我们在Java项目中引入Hibernate框架之后,就能以面向对象的方式来操作关系数据库了. 下载: 登陆Hibernate官网,下载Hibernate压缩包,win ...
- 自己动手写CPU(基于FPGA与Verilog)
大三上学期开展了数字系统设计的课程,下学期便要求自己写一个单周期CPU和一个多周期CPU,既然要学,就记录一下学习的过程. CPU--中央处理器,顾名思义,是计算机中最重要的一部分,功能就是周而复始地 ...
- .Net Core SignalR 实时推送信息
以前一直没用成功过SignalR(.net asp),最近几天又参考了对应的文档,最终调成功啦. 开始之前,应该注意: 一定要.Net Core 2.1.0以上的SDK. VS2017 15.6以上的 ...
- JAVA_SE基础——17.方法的重载
方法重载: 方法重载就是方法名称重复,加载参数不同. 具体规范: 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体. 1.如果参数个数不同,就不管它的参数类 ...
- Angular组件——组件生命周期(二)
一.view钩子 view钩子有2个,ngAfterViewInit和ngAfterViewChecked钩子. 1.实现ngAfterViewInit和ngAfterViewChecked钩子时注意 ...
- unity A*寻路 (三)A*算法
这里我就不解释A*算法 如果你还不知道A*算法 网上有很多简单易懂的例子 我发几个我看过的链接 http://www.cnblogs.com/lipan/archive/2010/07/01/1769 ...
- 初次面对c++
第一次实验 2-4源码: #include<iostream> using namespace std; int main() { int day; cin>>day; swi ...
- J2ee入门:servlet-mapping的映射配置
<servlet-mapping>元素在Servlet和URL样式之间定义一个映射.它包含了两个子元素<servlet- name>和<url-pattern> & ...