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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

P7736-[NOI2021]路径交点【LGV引理】

發布時間:2023/12/3 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P7736-[NOI2021]路径交点【LGV引理】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/P7736


題目大意

kkk層的圖,第iii層有nin_ini?個點,每層的點從上到下排列,層從左到右排列。再給出連接相鄰層的一些有向邊(從iii層連向i+1i+1i+1層)。
對于n1n_1n1?層每個點作為起點同時出發走到不同的nkn_knk?層的點的所有路徑方案中,交點數量為偶數的減去為奇數的方案有多少個。

1≤k≤100,2≤n1≤100,n1=nk,n1≤ni≤2×n1,1≤T≤51\leq k\leq 100,2\leq n_1\leq 100,n_1=n_k,n_1\leq n_i\leq 2\times n_1,1\leq T\leq 51k100,2n1?100,n1?=nk?,n1?ni?2×n1?,1T5


解題思路

分析一下,若第111層起點1,21,21,2分別對應終點1,21,21,2,記fi,1/2f_{i,1/2}fi,1/2?表示1/21/21/2在第iii層的位置。中間某個位置他們路徑有了交點,那么一定滿足他們存在一層使得fi,1>fi,2f_{i,1}>f_{i,2}fi,1?>fi,2?但是因為f1,1<f1,2f_{1,1}<f_{1,2}f1,1?<f1,2?fn,1<fn,2f_{n,1}<f_{n,2}fn,1?<fn,2?也就是說明前后都各有一個交點。
拓展一下也就是說中間的路徑走法不影響交點的奇偶性,只有起點和終點會影響奇偶性。再進一步說,路徑交點的奇偶性就是起點對應終點的排列pip_ipi?的逆序對數量的奇偶性。

設排列ppp表示起點iii會走到終點pip_ipi?σ(p)\sigma(p)σ(p)表示排列ppp的逆序對數量,w(p)w(p)w(p)表示排列ppp的路徑方案
那么答案就是
∑(?1)σ(p)w(p)\sum (-1)^{\sigma(p)}w(p)(?1)σ(p)w(p)
發現和LGVLGVLGV引理的式子一模一樣,直接上就好了

時間復雜度O(T(k2n+n3))O(T(k^2n+n^3))O(T(k2n+n3))


code

#include<cstdio> #include<cstring> #include<algorithm> #include<cctype> #include<vector> #define ll long long using namespace std; const ll N=210,P=998244353; ll T,k,n[N],m[N],f[N][N],a[N][N]; vector<int> G[N][N]; ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-f;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f; } ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans; } ll det(ll n){ll ans=1,f=1;for(ll i=1;i<=n;i++){for(ll j=i;j<=n;j++)if(a[j][i]){if(j!=i)swap(a[j],a[i]),f=!f;break;}ll inv=power(a[i][i],P-2);ans=ans*a[i][i]%P;for(ll j=i;j<=n;j++)a[i][j]=a[i][j]*inv%P;for(ll j=i+1;j<=n;j++){ll rate=P-a[j][i];for(ll k=i;k<=n;k++)(a[j][k]+=rate*a[i][k]%P)%=P;}}return f?ans:((P-ans)%P); } signed main() {T=read();while(T--){k=read();for(ll i=1;i<=k;i++)n[i]=read();for(ll i=1;i<k;i++)m[i]=read();for(ll i=1;i<k;i++){for(ll j=1;j<=m[i];j++){ll x=read(),y=read();G[i][x].push_back(y);}}for(ll i=1;i<=n[k];i++){f[k][i]=1;f[k][i-1]=0;for(ll j=k-1;j>=1;j--)for(ll x=1;x<=n[j];x++){f[j][x]=0;for(ll p=0;p<G[j][x].size();p++)(f[j][x]+=f[j+1][G[j][x][p]])%=P;}for(ll j=1;j<=n[1];j++)a[j][i]=f[1][j];}f[k][n[k]]=0;printf("%lld\n",det(n[1]));for(ll i=1;i<=k;i++)for(ll j=1;j<=n[i];j++)G[i][j].clear();}return 0; }

總結

以上是生活随笔為你收集整理的P7736-[NOI2021]路径交点【LGV引理】的全部內容,希望文章能夠幫你解決所遇到的問題。

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