【bzoj1002】轮状病毒
Solution
虽然说看上去是一道矩阵树定理的题但是
但是!
没有模数了解一下,\(n=100\)了解一下
开心愉快敲了一个高消之后发现跑到\(80\)都已经炸了
果断放弃了高消写高精度的念头之后突然发现好像这堆矩阵长的都差不多啊
然后就开始大力打表找规律了。。。
最后发现其实如果用\(f[x]\)表示\(n=x\)时的答案,那么我们有:
\]
然后就高精度一下就好了
就是这么冷酷无情并且虚伪qwq
代码大概长这个样子
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=110;
struct bint{/*{{{*/
    int a[N+1];
    void set(int val){
        memset(a,0,sizeof(a));
        a[N]=val;
    }
    friend bint operator * (bint x,int y){
        bint ret; ret.set(0);
        int s,g=0;
        for (int i=N;i>=1;--i){
            s=x.a[i]*y+g;
            ret.a[i]=s%10;
            g=s/10;
        }
        return ret;
    }
    friend bint operator - (bint x,bint y){
        bint ret; ret.set(0);
        int s,g=0;
        for (int i=N;i>=1;--i){
            if (x.a[i]-g-y.a[i]>=0)
                ret.a[i]=x.a[i]-g-y.a[i],g=0;
            else
                ret.a[i]=x.a[i]+10-g-y.a[i],g=1;
        }
        return ret;
    }
    friend bint operator + (bint x,bint y){
        bint ret; ret.set(0);
        int s,g=0;
        for (int i=N;i>=1;--i){
            s=x.a[i]+y.a[i]+g;
            ret.a[i]=s%10;
            g=s/10;
        }
        return ret;
    }
    void print(){
        int j=1;
        while (a[j]==0) ++j;
        for (int i=j;i<=N;++i) printf("%d",a[i]);
        printf("\n");
    }
}f[N],two;/*}}}*/
int n;
int main(){
#ifndef ONLINE_JUDGE
    freopen("a.in","r",stdin);
#endif
    scanf("%d",&n);
    f[1].set(1);
    f[2].set(5);
    two.set(2);
    for (int i=3;i<=n;++i)
        f[i]=f[i-1]*3-f[i-2]+two;
    f[n].print();
}
												
											【bzoj1002】轮状病毒的更多相关文章
- BZOJ-1002 轮状病毒  高精度加减+Kirchhoff矩阵数定理+递推
		
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3543 Solved: 1953 [Submit][Statu ...
 - BZOJ1002 轮状病毒
		
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...
 - [bzoj1002]轮状病毒-矩阵树定理
		
Brief Description 求外圈有\(n\)个点的, 形态如图所示的无向图的生成树个数. Algorithm Design \[f(n) = (3*f(n-1)-f(n-2)+2)\] Co ...
 - bzoj1002轮状病毒
		
高精度练习题 根据什么什么基尔霍夫矩阵 反正就是高精度练习 #include<iostream> #include<cstdio> using namespace std; s ...
 - bzoj1002 轮状病毒 暴力打标找规律/基尔霍夫矩阵+高斯消元
		
基本思路: 1.先观察规律,写写画画未果 2.写程序暴力打表找规律,找出规律 1-15的答案:1 5 16 45 121 320 841 2205 5776 151 ...
 - 【bzoj1019】汉诺塔
		
[bzoj1019]汉诺塔 题意 传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1019 分析 思路1:待定系数+解方程 设\(f[n]\)为 ...
 - 【正经向】NOIP2017烤后总结
		
[正经向]NOIP2017烤后总结 Warning: 合法的评论(举例): 博主辣么juruo还来参加NOIP,不要脸 不合法的评论(举例): %%%%%博主太强了,我菜爆了 博主将删除不合法评论,& ...
 - bzoj1000~1025
		
以后还是这样 25道题一起发 看着爽 noip失利之后发粪涂墙 刷了一波bzoj 题解: bzoj1000 A+B问题 这题不同的人有不同的写法,我写了个线段树套Treap,应该还是挺简单的 但是看别 ...
 - 【BZOJ1002】[ZJOI2006]轮状病毒
		
[BZOJ1002]轮状病毒 题面 bzoj 题解 统计个数显然直接矩阵树定理,找规律截这里 打标如下: #include <iostream> #include <cstdlib& ...
 - BZOJ1002【FJOI2007】轮状病毒
		
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 6917 Solved: 3777[Submit][Statu ...
 
随机推荐
- thinkphp5登录并保存session、根据不同用户权限跳转不同页面
			
本文讲述如何在thinkphp5中完成登录并保存session.然后根据不同的用户权限跳转相应页面功能的实现.我也在学习thinkphp源码的路上,记录一下并与大家分享.完成该步骤主要有以下三个步骤完 ...
 - NO.08--VUE之自定义组件添加原生事件
			
前几篇给大家分享了我的业余的“薅羊毛”的经历,回归正题,讲回vue吧: 许多vue新手在工作开发中会遇到一个问题,直接使用 button 添加原生事件是没有问题的,但是使用自定义组件添加原生事件时,就 ...
 - git blame 查看某行代码提交记录
			
1. 在当前git项目目录下执行 git blame -L 38,38 <filename> 例子: git blame -L 38,38 src/component/BarCode/i ...
 - Codeforces Round #613 Div.1 D.Kingdom and its Cities 贪心+虚树
			
题目链接:http://codeforces.com/contest/613/problem/D 题意概述: 给出一棵树,每次询问一些点,计算最少删除几个点可以让询问的点两两不连通,无解输出-1.保证 ...
 - js操作对象属性值为字符串
			
今天在项目开发中遇到一个没遇到过的问题,这个问题是需要对比两个对象a和b,a是一个只有一个属性的对象,b是一个含有多个属性对象,如果b中包含和a一模一样的属性名和值,则把这个一样的属性和值从b中删除了 ...
 - 从无到有之webpack+vuerouter的简单例子以及各个属性解释
			
之前一直没玩过webpack和vue,近两周才看这玩意,本文纯属自己的实验+之前angular作战经验的理解一些入门文章 首先webpack关于vue以及各个包 module.exports = { ...
 - CodeForces 57C Array 组合计数+逆元
			
题目链接: http://codeforces.com/problemset/problem/57/C 题意: 给你一个数n,表示有n个数的序列,每个数范围为[1,n],叫你求所有非降和非升序列的个数 ...
 - jQuery之offset,position
			
获取/设置标签的位置数据 * offset(): 相对页面左上角的坐标 * position(): 相对于父元素左上角的坐标. 需求: 1. 点击 btn1 打印 div1 相对于页面左上角的位置 打 ...
 - 在MySQL中如何使用覆盖索引优化limit分页查询
			
背景 今年3月份时候,线上发生一次大事故.公司主要后端服务器发生宕机,所有接口超时.宕机半小时后,又自动恢复正常.但是过了2小时,又再次发生宕机. 通过接口日志,发现MySQL数据库无法响应服务器.在 ...
 - Android性能测试工具APT
			
APT源码地址:https://code.csdn.net/Tencent/apt APT,Android Performance Testing Tools,适用于开发自测和定位性能瓶颈,帮助测试人 ...