武大校賽E題

2021-07-30 08:46:32 字數 1490 閱讀 7530

題意是給定一副無向圖,然後求走了t步之內,從起點到終點有多少走法,(有個地方題面沒有說清楚,就是走到點n之後不能再往別的點走了)

鄰接矩陣,乘t次之後,map[i][j]就是從i點走到j點的且走t步時的走法。

我們把矩陣中n到其他點的路徑去掉,

所以我們要算的就是∑ (map[1][n] )^i (1 <= i <= t)就是答案了 。於是我們要構造乙個矩陣把字首和記錄一下。

由於在原來的鄰接矩陣中,我們只關心的只有map[1][n]這個值,我們可以把原矩陣放入乙個新的矩陣中,或者說把矩陣拓展一維,令map[0][n] = 1,然後把這樣,map[1][0]記錄的就是上乙個狀態的map[1][n],由於是要求字首和,我們要把他再加起來,所以map[0][0]處再新增乙個1進去,這樣就可以把上個狀態一起加進去,遞推之後map[1][0]就是不包括當前狀態字首和,最後答案就是map[1][n] + map[1][0] ;

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define long long long

const

int inf=0x3f3f3f3f;

const long mod=1e9+7;

const

double pi=acos(-1.0);

#define clr0(x) memset(x,0,sizeof x)

#define clri(x) memset(x,-1,sizeof(x))

#define clr1(x) memset(x,inf,sizeof x)

#define clr2(x) memset(x,-inf,sizeof x)

#define eps 1e-10

int n ;

struct matr

matr ( long x,int y)

};matr operator * (matr &a , matr &b)

return ans ;

}matr equ(matr &a , matr &b)

matr q_pow_m( matr &a , long b)

return res ;

}int main()

int t ;

cin>> t ;

matr tmp(0);

matr ans(0);

ans = q_pow_m( take , t ) ;

cout

<<( ans.matr[1][n] + ans.matr[1][0] ) % mod<0;

}}

2017川大校賽A題

題意就不說了,我們也錯了那麼多次,這個題有兩個問,其實比較難的是第乙個問,但是剛好第乙個問我在上一周曾經問過龍哥,那麼第乙個問就秒出答案,對於第乙個問的精度問題,當暴力算時n是小於10的,答案要求保留前6位小數,沒問題。然後第二個問就是乙個比較簡單的概率dp。題目求抽m次剛好抽到n張卡的概率,那麼對...

山科大校賽C題

時間限制 1 sec 記憶體限制 128 m 瑞神要準備考研了,為了複習資料結構,瑞神在某寶上買了一本資料結構得考研輔導資料 考研資料結構 從入門到放棄 從此瑞神開始了愉快的復 zhuang 習 bi 有一天,瑞神找了好多條鍊錶來輔助自己複習,但是他在複習的過程中一不小心把鍊錶掉在了地上,撿起來的時...

湖科大校賽第三題

小兔位於x軸的x點,欲跳至x軸的y點。x,y均為整數。小兔每次沿x軸直線跳躍,每跳的長度均為正整數,假設 小兔一共跳了n次才到目的地,每次跳的長度為f1,f2,fn.有規則如下 f1 fn 1 fi fi 1 1 2 i n 注 是絕對值符號 我們的問題是給定x,y,如何使得n最小。包含多組資料,但...