題意:
乙個n個點的環,當你在i號點時有pi/2的概率走向(i%n+1)號點,有pi/2的概率走向((i-2+n)%n+1)號點,有(1-pi)的概率永遠停下,動態修改pi,多次詢問從i號點出發走的距離的期望值f(i)。
範圍n<=100000
這個題就是誘導人去想高斯消元的,然後複雜度**。。。。。。
電腦高斯消元會**,那麼我們就用我們的人腦幫電腦消一些元。
不難發現,可以由fi和f(i-1)得到f(i+1)
那麼假設f(1)=x,f(n-1)=y;
線性遞推一下轉一圈回來我們會得到關於x,y的二元一次方程組,
用行列式的公式直接上:
a x + b y = c
d x + e y = f
y= (af-cd)/ (ae-bd)
x= (bf-ce)/ (bd-ae)
樓主口胡了乙個口訣:
另一未知量的係數列向量與常數列向量所組成的行列式值除以
另一未知量的係數列向量與本未知量列向量所組成的行列式值(順序從左到右不能改)
好吧這的確不像乙個口訣
然後就是老套路了,線性遞推關係在中途修改常數可以用線段樹維護矩陣區間積。
每次修改後算出f(1),f(n),詢問就用矩陣區間積快速求出其與f(1),f(n)的關係。。。。
accode:
#include#include#include#include#define mod 998244353
#define lc now<<1
#define rc now<<1|1
#define ll long long
#define maxn 100005
using namespace std;
int n,p[maxn];
inline int pow(int base,int k)
struct mat
}a,i;
mat m[maxn*8];
void insert(int now,int l,int r,int pos,mat a)
int mid=(l+r)>>1;
insert(lc,l,mid,pos,a);
insert(rc,mid+1,r,pos,a);
m[now]=m[rc]*m[lc];
}int f[maxn];
inline void solve()
f[n]=(mod-1ll*b[2]*pow(b[1],mod-2)%mod)%mod;
a[2]=(a[2]+1ll*f[n]*a[1]%mod)%mod;
f[1]=(mod-1ll*a[2]*pow(a[0],mod-2)%mod)%mod;
*/ m[1].a[0]--,m[1].b[1]--;m[1].a[2]=-m[1].a[2],m[1].b[2]=-m[1].b[2];
f[n]=(1ll*m[1].a[0]*m[1].b[2]-1ll*m[1].b[0]*m[1].a[2])%mod * pow( (1ll*m[1].a[0]*m[1].b[1]-1ll*m[1].b[0]*m[1].a[1])%mod,mod-2)%mod;
f[1]=(1ll*m[1].a[1]*m[1].b[2]-1ll*m[1].b[1]*m[1].a[2])%mod * pow( (1ll*m[1].a[1]*m[1].b[0]-1ll*m[1].b[1]*m[1].a[0])%mod,mod-2)%mod;
m[1].a[0]++,m[1].b[1]++;m[1].a[2]=-m[1].a[2],m[1].b[2]=-m[1].b[2];
}inline mat query(int now,int l,int r,int ql,int qr)
inline int query(int id)
char ch;
inline void get(int &res)
int main()
solve();
int q,tag;
get(q);
for(;q--;)
else
}}
注:在面對998244353等小模數時將小矩陣的乘法迴圈展開不僅可以優化常數,還可以少模幾次,實測快了500ms+,但且隨疾風前行,身後小心爆零!
a x + b y = c
d x + e y = f
省選模擬賽Day4T3迂迴
problem problem problem problem problem problem problem problem 3 迂迴 tour tour tour tour tour tour 題目描述 題目描述 給定一有向圖,邊長均為 1,求 長度 小於 k的環個數 mod m 保證 有向圖中...
省選模擬賽03 16 T3 超級樹
目錄一棵 k 超級樹 k supertree 可按如下方法得到 取一棵深度為 k 的滿二叉樹,對每個節點向它的所有祖先連邊 如果這條邊不存在的話 例如,下面是乙個 4 超級樹 請統計一棵 k 超級樹 中有多少條不同的簡單有向路徑,對 mod 取模。input 一行兩整數 k,mod。output 一...
snoi省選模擬賽 day3t1 路徑規劃
kac在數軸上有n片西瓜地。第 i片的座標是x i 注意 x並沒有排序 任意兩片西瓜地座標不同。有一天他要給這n片西瓜地澆水。初始他在x 1 的位置。他必須按1.n 的順序澆水,也就是說,必須先去x 1 再去x 2 最後到x n 他可以沿著座標軸正方向或者負方向走 給西瓜地澆水不需要花費時間。每走1...