当前位置: 首页 > java >正文

题解:AT_abc244_e [ABC244E] King Bombee

一道图上 DP 的好题。

(题目自己看,我就不说了。)

首先一看到求方案数,首先就要反应的是 DP 或者排列组合,反正考试的时候我写半天排列组合没写出来,所以就只能是 DP 了。(好牵强的理由啊……)

既然是 DP,那我们看看 DP 表示什么。自然是求啥设啥,那应该开几维呢?怎么写状态转移方程呢?

首先我们来解决第一个问题:我们看看题目中有几个不定量。不难发现,最主要的一共有三个:当前所在的点、总长度和经过 X X X 的次数。所以 DP 一共就有三维。(正好开下数据范围。)

接着我们来写状态转移方程,其实我们把 DP 设出来之后就很好写状态转移方程了,具体如下:

{ d p i , j , 0 = d p i , j , 0 + d p i − 1 , t o , 0 , d p i , j , 1 = d p i , j , 1 + d p i − 1 , t o , 1 j ≠ t d p i , j , 0 = d p i , j , 0 + d p i − 1 , t o , 1 , d p i , j , 1 = d p i , j , 1 + d p i − 1 , t o , 0 j = t \begin{cases} dp_{i,j,0}=dp_{i,j,0}+dp_{i-1,to,0},dp_{i,j,1}=dp_{i,j,1}+dp_{i-1,to,1}&j\not=t\\dp_{i,j,0}=dp_{i,j,0}+dp_{i-1,to,1},dp_{i,j,1}=dp_{i,j,1}+dp_{i-1,to,0}&j=t\end{cases} {dpi,j,0=dpi,j,0+dpi1,to,0,dpi,j,1=dpi,j,1+dpi1,to,1dpi,j,0=dpi,j,0+dpi1,to,1,dpi,j,1=dpi,j,1+dpi1,to,0j=tj=t

其中 t o to to 表示从 j j j 能到的点。

AC 代码:

#include<bits/stdc++.h>
#define int long long
#define mod 998244353
using namespace std;
int n,m,k,s,t,x,dp[2006][2006][2];
vector<int>v[2006];
signed main()
{cin>>n>>m>>k>>s>>t>>x;for(int i=1,y,z;i<=m;i++){cin>>y>>z;v[y].emplace_back(z);v[z].emplace_back(y);}dp[0][s][0]=1;for(int i=1;i<=k;i++){for(int j=1;j<=n;j++){for(auto l:v[j]){if(j==x){dp[i][j][0]+=dp[i-1][l][1],dp[i][j][0]%=mod;dp[i][j][1]+=dp[i-1][l][0],dp[i][j][1]%=mod;}else{dp[i][j][0]+=dp[i-1][l][0],dp[i][j][0]%=mod;dp[i][j][1]+=dp[i-1][l][1],dp[i][j][1]%=mod;}}}}cout<<dp[k][t][0]%mod;return 0;
}
http://www.xdnf.cn/news/7502.html

相关文章:

  • 如何使用AI辅助开发CSS3 - 通义灵码功能全解析
  • 杰发科技AC7840——如何把结构体数据写到Dflash中
  • 科技赋能,开启现代健康养生新潮流
  • 聊一聊接口的安全测试如何进行的?
  • 【JavaEE】多线程
  • Java转Go日记(四十一):Gorm删除
  • Java大师成长计划之第28天:处理多线程的Web应用
  • 嵌入式学习笔记 - CAN总线
  • 房贷利率计算前端小程序
  • 图论学习笔记 3
  • 电磁感应在量子计算中如何应用
  • Adv. Sci.|南医大倪春辉团队破局肺纤维化:锁定脂肪酸氧化与糖酵解 “失衡点”,挖掘关键治疗靶点
  • python宠物用品商城系统
  • 深度解析Vue项目Webpack打包分包策略 从基础配置到高级优化,全面掌握性能优化核心技巧
  • 【Java的批量操作】
  • 【leetcode】59. 斐波那契数
  • RK3568 OH5.1 源码编译及问题
  • 海康威视摄像头C#开发指南:从SDK对接到安全增强与高并发优化
  • React+TypeScript多步骤表单:告别表单地狱的现代解决方案
  • 请问交换机和路由器的区别?vlan 和 VPN 是什么?
  • Python + moviepy:根据图片或数据高效生成视频全流程详解
  • 链表的面试题8之环形链表
  • 关闭 Ubuntu 20.04 的 GNOME Shell和PulseAudio
  • Java 03(代码块,内部类,lambda表达式)
  • python八股文汇总(持续更新版)
  • 《医院运营管理典型应用数据资源建设指南2025》全面分析
  • Apache Apisix配置ip-restriction插件以限制IP地址访问
  • CesiumEarth v1.15 更新
  • 在Windows系统中使用C++与Orthanc交互:基于DICOMweb的医学影像应用开发
  • Fiddler抓包教程->HTTP和HTTPS基础知识