bzoj1002: [FJOI2007]轮状病毒 生成树计数
轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的。一个N轮状基由圆环上N个不同的基原子
和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道。如下图所示
.png)
N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不
同的3轮状病毒,如下图所示
.png)
/**************************************************************
Problem: 1002
User: walfy
Language: Java
Result: Accepted
Time:1700 ms
Memory:24832 kb
****************************************************************/ import java.awt.List;
import java.math.BigInteger;
import java.sql.Date;
import java.util.*;
import java.util.Map.Entry; import javax.swing.text.html.HTMLDocument.Iterator; public class Main { static BigInteger [][] A = new BigInteger [100+10][100+10];
static BigInteger [] D = new BigInteger [100+10];
static void cal(int n)
{
BigInteger ans=BigInteger.valueOf(1);
for(int i=1;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
while(!A[j][i].equals(BigInteger.valueOf(0))){
BigInteger t=A[i][i].divide(A[j][i]);
for(int k=i;k<n;k++)
A[i][k]=A[i][k].subtract(A[j][k].multiply(t));
for(int k=i;k<n;k++)
{
BigInteger te=A[i][k];
A[i][k]=A[j][k];
A[j][k]=te;
}
ans=ans.negate();
}
}
if(A[i][i]==BigInteger.valueOf(0))
{
System.out.println(0);
return ;
}
ans=ans.multiply(A[i][i]);
}
if(ans.compareTo(BigInteger.valueOf(0))<0)ans=ans.negate();
System.out.println(ans);
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();n++;
if(n==3)
{
System.out.println("5");
return ;
}
for(int i=1;i<=n;i++)
{
D[i]=BigInteger.valueOf(0);
for(int j=1;j<=n;j++)
A[i][j]=BigInteger.valueOf(0);
}
for(int i=2;i<=n;i++)
{
if(i==n)
{
A[n][2]=BigInteger.valueOf(1);
A[2][n]=BigInteger.valueOf(1);
}
else
{
A[i][i+1]=BigInteger.valueOf(1);
A[i+1][i]=BigInteger.valueOf(1);
}
A[1][i]=BigInteger.valueOf(1);
A[i][1]=BigInteger.valueOf(1);
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(A[i][j].compareTo(BigInteger.ZERO)!=0)
{
D[i]=D[i].add(BigInteger.ONE);
D[j]=D[j].add(BigInteger.ONE);
}
}
}
// for(int i=1;i<=n;i++)System.out.println(D[i]);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j)A[i][j]=D[i];
else A[i][j]=A[i][j].negate();
}
}
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=n;j++)
// System.out.print(A[i][j]+" ");
// System.out.println();
// }
cal(n);
}
}
bzoj1002: [FJOI2007]轮状病毒 生成树计数的更多相关文章
- [bzoj1002][FJOI2007 轮状病毒] (生成树计数+递推+高精度)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...
- BZOJ1002 [FJOI2007]轮状病毒(最小生成树计数)
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 7125 Solved: 3878[Submit][Status][Discuss] Descripti ...
- BZOJ1002 FJOI2007 轮状病毒 【基尔霍夫矩阵+高精度】
BZOJ1002 FJOI2007 轮状病毒 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原 ...
- [luogu2144][bzoj1002][FJOI2007]轮状病毒【高精度+斐波那契数列+基尔霍夫矩阵】
题目描述 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病 ...
- [bzoj1002][FJOI2007]轮状病毒_递推_高精度
轮状病毒 bzoj-1002 FJOI-2007 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2 ...
- bzoj1002: [FJOI2007]轮状病毒(基尔霍夫矩阵)
1002: [FJOI2007]轮状病毒 题目:传送门 题解: 决定开始板刷的第一题... 看到这题的时候想:这不就是求有多少种最小生成树的方式吗? 不会啊!!!%题解... 什么鬼?基尔霍夫矩阵?? ...
- [BZOJ1002] [FJOI2007] 轮状病毒 (数学)
Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同的n轮状病毒数输出 Sample Inpu ...
- BZOJ1002[FJOI2007]轮状病毒
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...
- BZOJ1002: [FJOI2007]轮状病毒 (DP)
标准做法似乎应该是计算生成树数量的基尔霍夫矩阵之类的.. 我看到的做法是一个神奇的高精度dp,当然以后这个blahblahblah矩阵还是要搞一下.. 参考(抄袭)网址 这个dp的原理就是把环 ...
随机推荐
- sscanf,sscanf
在#include<stdio.h> 定义函数 int sscanf (const char *str,const char * format,........); 函数说明: sscan ...
- PAT 1033 To Fill or Not to Fill[dp]
1033 To Fill or Not to Fill(25 分) With highways available, driving a car from Hangzhou to any other ...
- 常用的系统架构 web服务器之iis,apache,tomcat三者之间的比较
常用的系统架构是: Linux + Apache + PHP + MySQL Linux + Apache + Java (WebSphere) + Oracle Windows Server 200 ...
- Linux系统——vim编辑器
一.Linux系统中最常用的文本编辑器 vi:类Unix系统中默认的文本编辑器 vim:vi编辑器的增强版 作用:创建或修改文本文件:维护Linux系统中各种配置文件 二.三种切换模式命令模式输入模式 ...
- 对JVM的理解
操作系统内核是至高无尚的内功心法,只有掌握了内功,学习其他的武功才会轻而易举. 现在我们来谈谈java.JVM其实是操作系统中运行的进程,JVM有操作系统进程的所有共性,但是它却不是一个普通的进程,它 ...
- 搭建Firekylin博客
搭建步骤 1).安装 Node.js curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - yum - ...
- HttpWebRequest 返回BadRequest(400) 同时返回Response
今天用Fiddler分析安卓APP的一个登陆功能的时候,账号和密码错误会返回相应的消息,并且状态码是400. 正常用法: /// <summary> /// 读取返回的内容 /// < ...
- 20145303 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Lin ...
- C#生成PDF2019
因接口生成Pdf推送, 工作需要进行Pdf生成,但网上生成Pdf的文档好少: 1.生成Pdf需要文件路径/内容 都可以配置 2.使用组件 itextsharp.dll 本人用版本:v2.0.5072 ...
- 2_jenkins_git创建创建及项目构建
确保jenkins服务正常工作 进入WEB界面 查看git插件是否正常安装 "管理系统" --> "管理插件" "可选插件" 然后找到 ...