ZROI1119 【十一·联考】幸福

ZROI1119 【十一·联考】幸福

传送门

一道矩阵快速幂。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
#include<cmath>
const int mod=998244353;
using namespace std;
struct matrix {
    ll data[7][7];
    void clear() {
        //for(int i=1;i<=5;i++)for(int j=1;j<=5;j++)data[i][j]=0;
        memset(data,0,sizeof(data));
    }
};
inline matrix operator * (matrix &a,matrix &b) {
    static matrix ans;ans.clear();
    for(int i=1;i<=5;i++) {for(int j=1;j<=5;j++) {for(int k=1;k<=5;k++) {ans.data[i][j]+=a.data[k][j]*b.data[i][k];ans.data[i][j]%=mod;}}}
    return ans;
}
matrix blank,re,E;
void init() {
    //re_n=2
    for(int i=1;i<=5;i++)E.data[i][i]=1;
    re.data[1][1]=1;
    re.data[2][1]=2;
    re.data[3][1]=1;
    re.data[4][1]=1;
    re.data[5][1]=3;
    blank.data[1][2]=1;blank.data[2][1]=1;blank.data[2][2]=1;blank.data[2][3]=1;blank.data[2][4]=1;blank.data[3][4]=1;
    blank.data[4][3]=1;blank.data[4][4]=1;blank.data[5][1]=1;blank.data[5][2]=1;blank.data[5][3]=1;blank.data[5][4]=1;blank.data[5][5]=1;
};
ll n;
matrix ksm(ll time) {
    matrix ans,cur;ans.clear();ans=E;cur=blank;
    for(;time;time>>=1,cur=cur*cur){
        if(time&1)ans=ans*cur;
    }
    return ans;
}
int main() {
    init();
    scanf("%lld",&n);
    if(n==1){printf("3");return 0;}
    matrix add=ksm(n-1);
    add=re*add;
    printf("%lld",add.data[5][1]);
    return 0;
}

原文地址:https://www.cnblogs.com/GavinZheng/p/11615658.html

时间: 2024-08-30 18:33:54

ZROI1119 【十一·联考】幸福的相关文章

【十一联考 1】T2 树链剖分

算法思路就不说了,其实比较简单 这里讲一下坑点: 1.虽然我们可以将边权压到点上,但是当根不同时,差分数组显然不同.所以我们不能真的将边权看做点权,换根时还是要将其当做边权来考虑. 1.更新时,我们设dp[u]表示u节点为根时的最大价值,由于经过点u后,点v的儿子将变成点u,所以此时我们要更新点v的儿子中的最大值以及次大值.注意!不止要更新最大值,次大值也要正确维护 我的代码没有加优化,因为保证正确就不错了 #include<bits/stdc++.h> using namespace std

jloi2017(shoi2017?)六省联考酱油记

Day -n 听说了4.22.4.23的省选,而且还是六省联考. 压力山大. 尽管我只是一名高一的simple OIer,在省选到来之前,心里还是很紧张的. 毕竟自己也知道南方dalao们都是神犇,像我这种巨蒻能考成什么样还很不好说. 感觉当时的紧张气氛堪比中考前. Teacher:这次省选就是让你们体验一下考试氛围的,并没有指望你们有多好的成绩,自己写好暴力就行了,不必非要写正解. 嗯,我本来就是去打酱油的,不在乎成绩. 考试前几天敲敲模板,博客也不写了,全力准备考试. Day 0 考前的晚上

3.5~3.6联考题解

本来想加个密码的,后来一想全HE就咱们这几个人,外省的dalao愿看也没事儿,就公开算了,省得加密码各种麻烦. 先补这两天的题解吧--如果有空的话我可能会把上次联考的题解补上= =(中午没睡觉,现在困得很,根本没法写题-- 算算算number 感觉出题人出题的时候zz了吧,费了半天搞出来一个极其麻烦还跑得慢的做法是要闹哪样啊-- 算了,写一写$O(nk)$做法的推导过程吧,虽然其实非常好推-- 首先定义$S_i$表示到$1~i$位置的前缀和,并且规定$S_0=0$,那么 \begin{align

六省联考:组合数问题

4870: [Shoi2017]组合数问题 2017-09-03 Description Input 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 ? 1 Output 一行一个整数代表答案. INPUT_1 2 10007 2 0 INPUT_2 20 10007 20 0 OUT_1 8 OUT_2 176 并不知道这个是什么玄学(组合数),但是这个题并不是裸组合数,因为联考时用组合数递

【2017杭二联考】 图的有向环

P2555 - [2017杭二联考]图的有向环 Description 题目背景: 幻想乡的亡灵公主,西行寺幽幽子,在幻想乡很受欢迎,经常有妖怪来拜访她,但是幽 幽子并不喜欢被打扰,她希望从白玉楼出发,散步之后再回到白玉楼,同时路上遇到的妖怪 越少越好(有趣的是道路两边的妖怪数量并不相同,分别从两个方向经过同一条道路遇到的 妖怪数量是不同的).当然,作为冥界的公主,她是不会重复经过同一条道路的. 问题描述: 给定一个有 n 个点 m 条无向边的图,每条无向边最多只能经过一次. 对于边(ui, v

【2017杭二联考】穿越矩形

P2554 - [2017杭二联考]穿越矩形 Description 题目背景: 幻想乡的创始人之一,八云紫,有着强大的控制结界的能力,可以瞬间消除一定范围内 所有弹幕.我们可以将其消除范围视为一个矩形,而弹幕可以视为动点. 八云紫想要嘲讽她的敌人,所以她希望只使用一次消除能力,尽可能多地消除弹幕. 请你告诉她,在哪一时刻使用道具,可以消除尽可能多的弹幕. 问题描述: 在平面上给定一个矩形区域(也可能退化成线段或者点). 矩形的边与坐标轴平行,左下端 点为 (xl,yl),右上端点为 (xr,y

8.9联考题解

今天的题有质量多了,尤其是第一题不再毫无意义,果然考这样的试比较有收获. 时间限制:1sec  内存限制:128MB 题解       刚开始看的时候没有思路.不过这样的考试才叫正常嘛,前两天T1那是什么玩意= =.边读题边写前缀和.离散之类的词,但是前缀和并不能处理出题目中所要求的情况,3*10^5大概最多nlogn.举了几个例子,发现好像和后面大于它的数有关,想了想怎么求它后面大于它的数字个数,过了一会猛然发现我举的例子也太特殊了,全都是单调递增的,有点挫败,就去做后面的题了.T2做了很久还

10.29 FJ四校联考

//四校联考Rank 16 感觉很滋磁 (虽然考的时候抱怨厦门一中出的数学题很NOIP///) 圈地 [问题描述] n根长度不一定相同的木棍,至多可以对其中一根切一刀,然后用其中的任意根围一个三角形,求三角形的最大面积.设面积为S,输出16*S^2对998244353取模后的答案.特别地,无解输出-1. 注:退化的三角形(面积为零)不被认为是三角形,答案应该为-1. [输入文件] 输入文件为tri.in. 输入文件第一行包含两个正整数n和998244353. 第二行包含n个正整数,表示每根木棍的

bzoj千题计划265:bzoj4873: [六省联考2017]寿司餐厅

http://www.lydsy.com/JudgeOnline/problem.php?id=4873 选a必选b,a依赖于b 最大权闭合子图模型 构图: 1.源点 向 正美味度区间 连 流量为 美味度 的边 2.负美味度区间 向 汇点 连 流量为 美味度的绝对值 的边 3.区间[i,j] 向 区间[i+1,j].区间[i,j-1] 连 流量为 inf 的边 4.区间[i,i] 向 寿司i 连 流量为 inf 的边 5.寿司i 向 汇点 连 流量为 寿司代号 的边 6.寿司i 向 它的代号 连