题解:CF1970E1 Trails (Easy)
基本思路
设 为第 天时在第 个小屋的方案数, 为第 个小屋共有多少条路连接(即 )。
易得转移方程为
(因为至少走一条短路,所以减去全长路的情况)
代码实现
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MOD = 1e9 + 7;
int n, m, s[105], l[105], r[105], dp[1005][105];
// dp[i][j]:第 i 天时在第 j 个小屋的方案数
signed main(){
cin >> m >> n;
for(int i = 1; i <= m; i++) cin >> s[i];
for(int i = 1; i <= m; i++){
cin >> l[i];
r[i] = l[i] + s[i];
}
dp[0][1] = 1;
for(int i = 1; i <= n; i++){ //天数
for(int j = 1; j <= m; j++){ //小屋编号
int sum = 0;
for(int k = 1; k <= m; k++){
sum += (r[j] * r[k] - l[j] * l[k]) * dp[i - 1][k];
sum %= MOD;
}
dp[i][j] = sum;
}
}
int sum = 0;
for(int i = 1; i <= m; i++){
sum += dp[n][i];
sum %= MOD;
}
cout << sum;
return 0;
}
本文来自博客园,作者:KukCair,转载请注明原文链接:https://www.cnblogs.com/KukCair/p/18564685
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步