F题求调
  • 板块学术版
  • 楼主rhn7
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/21 21:51
  • 上次更新2024/9/21 22:41:24
查看原帖
F题求调
760998
rhn7楼主2024/9/21 21:51
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=2e5+5,P=998244353;
ll n,m,k,ans,x[55],y[55],dp[N][55];
ll cal(ll a,ll b){
	if(a<=b) return b-a;
	return n-(a-b);
}
int main(){
	ios::sync_with_stdio(0);
	cin>>n>>m>>k;
	for(ll i=1;i<=m;i++) cin>>x[i]>>y[i];
	for(ll i=1;i<=m;i++){
		if(cal(1,x[i])+1<=k)dp[cal(1,x[i])+1][i]=1;
	}
	for(ll i=0;i<=k;i++){
		for(ll j=1;j<=m;j++){
			if(!dp[i][j]) continue;
			if(i+n<=k){
				(dp[i+n][j]+=dp[i][j])%=P;
			}
			for(ll p=1;p<=m;p++){
				if(i+1+cal(y[j],x[p])<=k){
					(dp[i+1+cal(y[j],x[p])][p]+=dp[i][j])%=P;
				}
			}
			(ans+=dp[i][j])%=P;
		}
	}
	cout<<ans+(k>=n-1);
    return 0;
}
2024/9/21 21:51
加载中...