BZOJ1002[FJOI2007]轮状病毒
Description
轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的。一个N轮状基由圆环上N个不同的基原子
和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道。如下图所示
.png)
N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不
同的3轮状病毒,如下图所示
.png)
Input
第一行有1个正整数n
Output
计算出的不同的n轮状病毒数输出
Sample Input
Sample Output
题解:
手推DP转移方式,推了好久依旧特别长。
不明白为什么他们的公式这么短。
代码:
var
i,j,k,l,n,m,x:longint;
a:array[..,..]of longint;
b,c:array[..]of longint;
begin
readln(n);
if n= then begin writeln(); halt; end;
if n= then
a[,]:=; a[,]:=; a[,]:=; a[,]:=;
a[,]:=; a[,]:=; a[,]:=; a[,]:=; a[,]:=;
for i:= to n- do
begin
x:=;
for j:= to a[i-,] do
begin
a[i,j]:=a[i,j]+*a[i-,j]-*a[i-,j]+*a[i-,j]-a[i-,j]+x;
while a[i,j]< do begin dec(a[i,j+]); a[i,j]:=a[i,j]+; end;
x:=a[i,j] div ;
a[i,j]:=a[i,j] mod ;
end;
while x> do begin inc(j); a[i,j]:=x mod ; x:=x div ; end;
a[i,]:=j;
end;
x:=;
for i:= to a[n-,] do
begin
a[n-,i]:=a[n-,i]*+x;
x:=a[n-,i] div ;
a[n-,i]:=a[n-,i] mod ;
end;
while x> do begin inc(i); a[n-,i]:=x mod ; x:=x div ; end;
a[n-,]:=i;
x:=;
for i:= to a[n-,] do
begin
a[n-,i]:=a[n-,i]*+x;
if i= then a[n-,i]:=a[n-,i]+;
x:=a[n-,i] div ;
a[n-,i]:=a[n-,i] mod ;
end;
while x> do begin inc(i); a[n-,i]:=x mod ; x:=x div ; end;
a[n-,]:=i;
for i:= to a[n-,] do
begin
a[n-,i]:=a[n-,i]-a[n-,i];
while a[n-,i]< do
begin
dec(a[n-,i+]); a[n-,i]:=a[n-,i]+;
end;
end;
while a[n-,a[n-,]]= do dec(a[n-,]);
for i:=a[n-,] downto do write(a[n-,i]);
writeln;
end.
BZOJ1002[FJOI2007]轮状病毒的更多相关文章
- BZOJ1002 FJOI2007 轮状病毒 【基尔霍夫矩阵+高精度】
BZOJ1002 FJOI2007 轮状病毒 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原 ...
- [bzoj1002][FJOI2007]轮状病毒_递推_高精度
轮状病毒 bzoj-1002 FJOI-2007 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2 ...
- bzoj1002: [FJOI2007]轮状病毒(基尔霍夫矩阵)
1002: [FJOI2007]轮状病毒 题目:传送门 题解: 决定开始板刷的第一题... 看到这题的时候想:这不就是求有多少种最小生成树的方式吗? 不会啊!!!%题解... 什么鬼?基尔霍夫矩阵?? ...
- [bzoj1002][FJOI2007 轮状病毒] (生成树计数+递推+高精度)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...
- [BZOJ1002] [FJOI2007] 轮状病毒 (数学)
Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同的n轮状病毒数输出 Sample Inpu ...
- [luogu2144][bzoj1002][FJOI2007]轮状病毒【高精度+斐波那契数列+基尔霍夫矩阵】
题目描述 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病 ...
- bzoj1002: [FJOI2007]轮状病毒 生成树计数
轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病毒的产生规 ...
- BZOJ1002:[FJOI2007]轮状病毒(找规律,递推)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...
- [bzoj1002] [FJOI2007]轮状病毒轮状病毒(基尔霍夫矩阵)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...
随机推荐
- postgreSQL时间、日期函数
一.获取系统时间函数 1.1.获取当前完整时间 select now(); select current_timestamp; 1.2.获取当前日期 select currnt_date: 1.3.获 ...
- Scalaz(58)- scalaz-stream: fs2-并行运算示范,fs2 parallel processing
从表面上来看,Stream代表一连串无穷数据元素.一连串的意思是元素有固定的排列顺序,所以对元素的运算也必须按照顺序来:完成了前面的运算再跟着进行下一个元素的运算.这样来看,Stream应该不是很好的 ...
- PHP 字符串左边补0,字符串右边补0
概述:项目中经常会使用到在一串编码左边.右边甚至中间自动填充制定字符如"0" 并且制定填充后的字符串长度. 函数str_pad:该函数返回 input 被从左端.右端或者同时两端被 ...
- e.target.files[0]层层剖析
因为我现在拿到的一个功能是上传时过滤掉很大尺寸的图片,所以需要来拿到上传时选择图片的size,所以有了这篇博文 不多说 上代码 $('input').change(function(e){ 1️⃣.c ...
- css水平垂直居中(绝对定位居中)
使用绝对定位有个限制就是父集必须设置一个固定的高度. 首先HTML <div id="box"> <div class="child"> ...
- TFS online 自动部署配置
概要 采用tfs online进行源码管理,并配置自动编译部署到外网上一台服务器上(阿里云虚拟机) 步骤; 下载angent,并运行脚本安装 配置release managemetn; 1)Copy ...
- iOS之获取屏幕尺寸
//app尺寸,去掉状态栏 CGRect appRect = [UIScreenmainScreen].applicationFrame; NSLog(@"%f, %f, %f,%f&quo ...
- [Android]Android端ORM框架——RapidORM(v1.0)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4748077.html Android上主流的ORM框架有很多 ...
- html中select标签根据枚举获得值的总结
不知不觉在公司一个多月了,这一个月做了一个支票申请的web页面功能,都不是特别难,审核有公司给的工作流,分页工具和很多公用工具公司也都给了,所以觉得难度都不是很大.今天主管让我们修改了以前做的项目的代 ...
- JNI笔记1
一.什么是JNI Java Native Interface(JNI)是Java语言的本地编程接口 是 Java 与操作系统本地代码互相调用的功能的接口 二.Java 调用C/C++步骤: 1.在Ja ...