[ABC212E] Safety Journey 题解
题目大意
给定一张缺少了 \(m\) 条边的 \(n\) 个点的完全图和一个正整数 \(k\),你需要求出满足以下条件的序列 \(A\) 的数量:
- \(A\) 的长度为 \(k+1\)。
- \(A_0=A_k=1\)。
- \(\forall 0\le i\le k-1\),点 \(A_i\) 和点 \(A_{i+1}\) 之间存在边。
思路分析
图上计数,考虑 DP。
设 \(f_{i,j}\) 表示考虑到路径上的第 \(i\) 个点(从 \(0\) 开始),当前位于点 \(j\) 的方案数。
那么所求的就是 \(f_{k,1}\)。
考虑状态转移,因为给出的是原图的补图,所以可以列出方程:
\]
其中,\(e_i\) 表示点 \(i\) 在补图中的出点集合。
容易发现,前半部分可以通过记录前缀和的方式优化掉,所以就做完了,时间复杂度和空间复杂度均为 \(O(n^2)\)(视 \(n,m\) 同阶),也可以通过滚动数组将空间优化到 \(O(n)\),但无所谓了。
代码
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
const int N=10100,M=5050,mod=998244353;
#define int long long
int to[N],nxt[N],head[N];
int idx=1,n,m,k,in1,in2,sum;
int f[M][M];
void add(int u,int v){
idx++;to[idx]=v;nxt[idx]=head[u];head[u]=idx;
}
signed main(){
scanf("%lld%lld%lld",&n,&m,&k);
for(int i=1;i<=m;i++){
scanf("%lld%lld",&in1,&in2);
add(in1,in2);add(in2,in1);
}
f[0][1]=1;//第 0 天在点 1 有一种方案
for(int i=1;i<=k;i++){
sum=0;
for(int s=1;s<=n;s++) sum+=f[i-1][s];//记录和
for(int s=1;s<=n;s++){
f[i][s]=sum-f[i-1][s];
for(int j=head[s];j;j=nxt[j]){
int v=to[j];
f[i][s]-=f[i-1][v];//依次减去
}
f[i][s]%=mod;
}
}
cout<<f[k][1]<<'\n';
return 0;
}
[ABC212E] Safety Journey 题解的更多相关文章
- [Codeforces 864C]Bus
Description A bus moves along the coordinate line Ox from the point x = 0 to the point x = a. After ...
- 【题解】Weird journey Codeforces 788B 欧拉路
传送门:http://codeforces.com/contest/788/problem/B 好题!好题! 首先图不连通的时候肯定答案是0,我们下面讨论图联通的情况 首先考虑,如果我们每条边都经过两 ...
- HDU 5477 A Sweet Journey 水题
A Sweet Journey Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
- cdoj 92 Journey tarjan/lca 树上点对距离
Journey Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/92 Descri ...
- BZOJ1533: [POI2005]Lot-A Journey to Mars
1533: [POI2005]Lot-A Journey to Mars Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 174 Solved: 76[S ...
- Codeforces Round #428 (Div. 2) 题解
题目链接:http://codeforces.com/contest/839 A. Arya and Bran 题意:每天给你一点糖果,如果大于8个,就只能给8个,剩下的可以存起来,小于8个就可以全部 ...
- 【cf789D】Weird journey(欧拉路、计数)
cf788B/789D. Weird journey 题意 n个点m条边无重边有自环无向图,问有多少种路径可以经过m-2条边两次,其它两条边1次.边集不同的路径就是不同的. 题解 将所有非自环的边变成 ...
- [Codeforces Round #507][Codeforces 1039C/1040E. Network Safety]
题目链接:1039C - Network Safety/1040E - Network Safety 题目大意:不得不说这场比赛的题面真的是又臭又长...... 有n个点,m条边,每个点有对应的权值c ...
- Gym 102056L - Eventual … Journey - [分类讨论][The 2018 ICPC Asia-East Continent Final Problem L]
题目链接:https://codeforces.com/gym/102056/problem/L LCR is really an incredible being. Thinking so, sit ...
- CF1039C.Network Safety
目录 题目链接 题解 代码 题目链接 CF1039C.Network Safety 题解 对于一对相邻点,^异或后相同的值唯一a_i ^ t= b_i,a_i ^ b_i = t 对于不在t集合的直接 ...
随机推荐
- 如何将视频文件.h264和音频文件.mp3复用为输出文件output.mp4?
一.初始化复用器 在这个部分我们可以分三步进行:(1)打开输入视频文件上下文句柄 (2)打开输入音频文件上下文句柄 (3)打开输出文件上下文句柄 1.打开输入视频文件上下文句柄 在这一步,我们主要用到 ...
- 移动端APP组件化架构实践
前言 对于中大型移动端APP开发来讲,组件化是一种常用的项目架构方式.个人最近几年在工作项目中也一直使用组件化的方式来开发,在这过程中也积累了一些经验和思考.主要是来自在日常开发中使用组件化开发遇到的 ...
- 从零实现的Chrome扩展
从零实现的Chrome扩展 Chrome扩展是一种可以在Chrome浏览器中添加新功能和修改浏览器行为的软件程序,例如我们常用的TamperMonkey.Proxy SwitchyOmega.AdGu ...
- 因为一条DDL,差点搞挂整个系统,这次真的长了教训
有一次在线上提了一个sql变更,就是下面这条, -- 修改字段的数据类型由varchar(500)变更为text ALTER TABLE t MODIFY COLUMN name text; 提完之后 ...
- 【调制解调】PM 调相
说明 学习数字信号处理算法时整理的学习笔记.同系列文章目录可见 <DSP 学习之路>目录,代码已上传到 Github - ModulationAndDemodulation.本篇介绍 PM ...
- JPA自动生成POJO
原文地址 JPA自动生成POJO 通过表生成POJO类 这篇文章不涉及idea配置数据源教程,该文章使用前提是用户已配置好idea数据源 修改自带的生成类 import com.intellij.da ...
- (四) MdbCluster分布式内存数据库——业务消息处理
(四) MdbCluster分布式内存数据库--业务消息处理 上篇:(三) MdbCluster分布式内存数据库--节点状态变化及分片调整 离上次更新文章已有快5个月,我还是有点懒.但我们系统 ...
- 基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章
最近在整理和编写基于C#的WinForm应用程序,然后碰到一个其他读者也可能碰到的问题,就是C#的Borderless无边框窗体的动画效果问题. 在Visual Studio 2022里,C#的Win ...
- 自定义gradle插件并且发布到本地仓库
转载请标明出处,维权必究:http://77blogs.com/?p=189 一.在工程上新建一个Module. 二.删除其余不必要的文件,最终目录结构如下: 注意:由于我用的是kotlin语言,所以 ...
- KVM 动态调整 qcow2 硬盘
动态扩容 参考:https://cloud-atlas.readthedocs.io/zh_CN/latest/kvm/kvm_vdisk_live.html 未关闭虚拟机,直接在宿主机器上qemu- ...