牛客网【每日一题】4月29日题目精讲 Symmetric Matrix

链接:

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld

题目描述

在这里插入图片描述
输入描述:

The input consists of several test cases and is terminated by end-of-file.
Each test case contains two integers n and m.

输出描述:

For each test case, print an integer which denotes the result.

示例1
输入

3 1000000000
100000 1000000000

输出

1
507109376

备注:

  • 1 ≤ n ≤ 105
  • 1 ≤ m ≤ 109
  • The sum of n does not exceed 107.

题解:

利用OEIS求解:

我们先枚举出n=2,3,4,5,6时,答案分别是多少?
n=2 sum=1
n=3 sum=1
n=4 sum=6
n=5 sum=22
然后在OEIS直接搜1 1 6 22就会弹出这个如图
OEIS是一个整数数列线上大全,可以利用数列中部分值查询这个数列以及公式
(第一次用OEIS,才发现有这么一个宝贝)
在这里插入图片描述
根据如图,可以得到式子
a(n)= ( n-1 ) * ( a(n - 1 ) * a( n-2 ) ) - ( n-1 ) * ( n-2 ) * a(n-3) /2
对了不要忘了mod m

具体证明:

不大会。。。
结合多篇文章,自己的理解
矩阵我们可以转化成图的构造,你就想想图的那个邻接矩阵表示法,(也就是常用的二维数组存边)边权值表示点与点有几条边

因为对称位置值相同(题目所给),每个点都会连接两个边,形成环,又因为对角线为0,所以边不可能连接自身
a[n]表示有n个点的情况
我们要做的时候,如果从a[n-1]推到a[n],也就是从n-1个点推到n个点
两种情况:
第一种: n-1个点选出一个的点与第n个点连接形成环,其他n-2个点自由连接
(n-1)f[n-2]
第二种:n-1个点选出一个点x与第n个点连接成边,但是暂不成环,只是单向连,然后n-1个点自由连,一定会出现空出一个点y只连接一次,再和第n个点相连
(n-1)f[n-1]

答案就是f[n]=(n-1)*( f[n-2]+f[n-1] )
但是情况二会存在重复,
因为矩阵是关于对角线对称的,第二种情况中,咱们一开始选出的点是x,最后选出的是y,如果倒过来先选的y后选的x,最后出来的矩阵效果是一样的,选x的方案数是n-1,选y是n-2,剩下n-3个数自由选择,倒过来会重复,所以减去 的值要除以2
所以重复的部分是(n-1)(n-2)f[n-3]/2

最后合在一起就OK了:a(n)= ( n-1 ) * ( a(n - 1 ) * a( n-2 ) ) - ( n-1 ) * ( n-2 ) * a(n-3) /2

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
const int maxn = 1e5 +5;
ll n,m;
ll f[maxn];
void init()
{f[1]=0;f[2]=1;f[3]=1;
}
int main(){while(cin>>n>>m){init();//初始化for(ll i=4;i<=n;i++){f[i]=((i-1)*f[i-2]+(i-1)*f[i-1]-(i-2)*(i-1)/2*f[i-3])%m;}printf("%lld\n",(f[n]+m)%m);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

邻接矩阵和邻接表的使用

邻接矩阵和邻接表的使用 邻接矩阵 为了遍历一个图&#xff0c;我们使用了邻接矩阵&#xff0c;及用ai,ja_{i,j}ai,j​表示由a到b的边权 注&#xff1a;若这两个点不相连或ijijij&#xff0c;那么这个值就会设定为一个非正常的值&#xff0c;以便遍历时特判不走这条边 使用&am…

YbtOJ#20239-[冲刺NOIP2020模拟赛Day10]连边方案【状压dp】

正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/3 题目大意 求有多少个nnn个点mmm条边的无向图满足 有连边的点之间编号差不超过kkk所有点的度数都为偶数 解题思路 因为kkk很小&#xff0c;所以我们考虑状压一个点前kkk个点的奇偶状态。设fi,j,s,0/1f_{i,j,s,…

有上下界网络流问题汇总

无源汇有上下界可行流 法一&#xff08;据说适合点少边多的图&#xff09;&#xff1a; 建图方法 首先建立附加源点ss和附加汇点tt对于原图中的边x->y&#xff0c;若限制为[b,c]&#xff0c;那么连边x->y&#xff0c;流量为c-b对于原图中的某一个点i&#xff0c;记d(i…

一个迄今为止最快的并发键值存储库FASTER诞生

FASTER在过去十年中&#xff0c;云中的数据密集型应用程序和服务有了巨大的增长。数据在各种边设施&#xff08;例如&#xff0c;设备&#xff0c;浏览器和服务器&#xff09;上创建&#xff0c;并由云应用程序处理用来获得数据价值或做出决策。应用程序和服务可以处理收集的数…

【斜率优化】仓库建设(luogu 2120)

仓库建设 luogu 2120 题目大意 有一个斜坡&#xff0c;上面有n个工厂&#xff08;山顶是1&#xff0c;山脚是nnn&#xff0c;工厂都是漏填&#xff09;&#xff0c;上面有pip_ipi​个货物&#xff0c;和工厂1的距离为x1x_1x1​ 现在有一场大雨&#xff0c;你可以在某些工厂处…

牛客网【每日一题】4月30日题目精讲 换个角度思考

链接&#xff1a; 文章目录题目描述题解&#xff1a;主席树做法&#xff1a;代码&#xff1a;树状数组&#xff1a;更扯淡的方法&#xff01;&#xff01;&#xff01;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言…

三元环计数四元环计数

三元环计数 问题 给出一张n个点m条边的无向图&#xff0c;问图中有多少个三元组{ u , v , w } &#xff0c;满足图中存在 { (u,v) , (v,w) , (w,u) } 三条边。 求解 Step1 定向 将所有点按 度数 从小到大排序&#xff0c;如果度数相同按 点编号 从小到大排序&#xff0c;u…

YbtOJ#20240-[冲刺NOIP2020模拟赛Day10]弱者对决【笛卡尔树,区间dp】

正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/4 题目大意 mmm个三元组(ai,bi,ci)(a_i,b_i,c_i)(ai​,bi​,ci​)&#xff0c;如果ci≥min{xj}(ai≤j≤bi)c_i\geq min\{x_j\}(a_i\leq j\leq b_i)ci​≥min{xj​}(ai​≤j≤bi​)那么可以获得min{xj}min\{x_j\}mi…

牛客网【每日一题】5月1日题目 [SCOI2012]滑雪与时间胶囊

链接&#xff1a; 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 a180285非常喜欢滑雪。他来到一座雪山&#xff0c;这里分布着M条供滑行的轨道和N个轨道之间的交点&#x…

漫谈单体架构与微服务架构(上):单体架构

最近微服务架构特别火爆&#xff0c;就跟人工智能、区块链一样&#xff0c;软件架构设计如果不提微服务&#xff0c;感觉就像是与世界先进的架构风格和开发技术脱了节似的&#xff0c;各方各面都无法彰显高大上的气质。本来再打算使用一套系列文章来讨论微服务的方方面面&#…

【数学】奶牛编号(jzoj 2932)

奶牛编号 jozj 2932 题目大意 求出有m个1的01串中字典序第n大的字典序 输入样例 7 3输出样例 10110数据范围 1⩽M⩽101 \leqslant M \leqslant 101⩽M⩽10 1⩽N⩽1071 \leqslant N \leqslant 10^71⩽N⩽107 解题思路 我们先从01串长度入手&#xff1a; 先对m1m 1m1的特…

CF732F Tourist Reform(dfs树、边双连通图、tarjan)

因为知道了算法tag&#xff0c;所以想到了正解&#xff1a; 先给出两个性质&#xff1a; 边双给边定向一定可以转为强连通图,此为最优解树给边定向后R的最小值必为0 性质2证明如下&#xff1a; 设树有n个节点, 若R_min!0, 则每点出度至少为1,各点出度之和至少为n, 则至少有…

【归并排序】奶牛的图片(jzoj 1812)

奶牛的图片 jzoj 1812 题目大意 给你一个序列&#xff0c;你可以交换相邻的两个数 让你用最少的交换次数来使得这个序列变成形如a1,a2...n,1,2...a−1,aa1,a2...n,1,2...a-1,aa1,a2...n,1,2...a−1,a的序列 问你最少的交换次数是多少次 输入样例 5 3 5 4 2 1输出样例 2解…

YbtOJ#20237-[冲刺NOIP2020模拟赛Day10]区间均值【树状数组】

正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/1 题目大意 nnn个数字的序列&#xff0c;求有多少个区间[l,r][l,r][l,r]的平均值在[L,R][L,R][L,R]的范围内。 解题思路 如果让每个ai−xa_i-xai​−x&#xff0c;那么统计区间和大于等于111的区间数量就可以统计…

ASP.NET Core应用程序的参数配置及使用

应用程序的开发不仅仅是写代码这点事情。假设你正在开发一个能够支持多次部署的微服务&#xff0c;此时你就需要有一个合理的应用程序配置方案&#xff0c;以便在开发和生产环境中能够方便地选用不同的配置参数&#xff0c;并且能够在部署到容器服务&#xff08;比如ACS或者Kub…

“Shopee杯” e起来编程暨武汉大学2020年大学生程序设计大赛决赛(重现赛)

比赛链接 文章目录A题 A Simple Problem about election题目描述题解&#xff1a;代码&#xff1a;D题 Deploy the medical team题意&#xff1a;题解&#xff1a;代码&#xff1a;F题 Figure out the sequence题意&#xff1a;题解&#xff1a;代码A题 A Simple Problem about…

Kruskal重构树

建树 模仿kruskal的过程&#xff0c;先将边权排序 依次遍历每条边 若该边连接的两个节点u和v不在一个并查集内 就新建一个结点node 该点点权为这条边的边权 找到u&#xff0c;v所在并查集的根 fufufu,fvfvfv 连边(node,fu)(n o d e , fu )(node,fu) (node,fv)( n o d e , f…

【斜率优化】玩具装箱(luogu 3195)

玩具装箱 luogu 3195 题目大意 有n件物品&#xff0c;每件物品有相对的长度CiC_iCi​现在要把这n件物品放到容器中&#xff0c;切放的物品必须是连续的&#xff0c;若把第i件物品到第j件物品放到一个容器中&#xff0c;那此容器的长度定义为xj−i∑kijCixj−i\sum_{ki}^{j} …

P5895-[IOI2013]dreaming梦想【树的直径,结论】

正题 题目链接:https://www.luogu.com.cn/problem/P5895 题目大意 nnn个点的一个森林&#xff0c;加入若干条长度为LLL的边使它变成一个树&#xff0c;求这棵树的最小直径。 解题思路 显然最优情况一定是以某个节点作为中间展开的一个菊花图&#xff08;每棵树看做一个点&…

RabbitMQ一个简单可靠的方案(.Net Core实现)

前言最近需要使用到消息队列相关技术&#xff0c;于是重新接触RabbitMQ。其中遇到了不少可靠性方面的问题&#xff0c;归纳了一下&#xff0c;大概有以下几种&#xff1a;1. 临时异常&#xff0c;如数据库网络闪断、http请求临时失效等&#xff1b;2. 时序异常&#xff0c;如A任…