日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网【每日一题】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; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的牛客网【每日一题】4月29日题目精讲 Symmetric Matrix的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。