题解:P15998 [ICPC 2020 NAC] All Kill
lailai0916 · · 题解
题意简述
每道题的思路出现时刻独立且均匀。程序按题号从小到大优先编码。求按时完成全部题目,且每道题的编码时间连续的思路时刻方案数。
解题思路
设所有题目的总代码量为
把比赛的
在原程序中,第
先给出加长车辆的停车计数式。各车长度依次为
该式可以用带根森林计数。补上停车场末尾的一个虚拟空位,得到
对应森林的加权拉普拉斯矩阵为:
取全
由矩阵树定理,行列式就是上述乘积,计数式成立。
本题中
依次维护代码时间前缀和即可。
参考代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=100005;
const int mod=998244353;
int a[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n,t;
cin>>n>>t;
int sum=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
}
int c=t-sum+1;
ll ans=c;
sum=0;
for(int i=1;i<n;i++)
{
sum+=a[i];
ans=ans*(sum+c+n-i)%mod;
}
cout<<ans<<'\n';
return 0;
}