[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集合的直接 ...
 
随机推荐
- MODBUS RTU转 EtherNet/IP 网关连接森兰变频器与欧姆龙系统通讯
			
捷米特JM-EIP-RTU(Modbus转Ethernet/Ip)网关,用于将多个 MODBUS 从站设备接入 ETHERNET/IP 主站网络,实现 MODBUS 转 ETHERNET/IP 功 ...
 - 使用SpringBoot+React搭建一个Excel报表平台
			
摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 Excel报表平台是一款功能强大.操作简单的系统平台,可 ...
 - 利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理
			
有时候,我们在处理大量文档的时候,需要批量给Word文档添加印章处理,方便打印操作,本篇随笔介绍利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理. 1.利用Aspose. ...
 - 2023年郑州轻工业大学校赛邀请赛mjh
			
首先,很感谢老师的信任,选择我去参加此次比赛:其次,感谢wh,wyh两位队友的全程带飞.此次比赛是我第一次参加线下的比赛活动,内心难免激动与紧张. 比赛开始,队友直接找到了签到题进行解答,而我拿到了看 ...
 - Blazor如何跟随“系统主题”?
			
1. 前言 跟随系统主题已经是绝大多数App和网站的标配 但是如何在Blazor中跟随系统主题? 只找到Masa Blazor技术团队发的 MAUI + Masa Blazor 开发界面跟随系统主题切 ...
 - PostgreSql: 安装与链接
			
环境介绍 使用宝塔面板,在阿里云中安装PostgreSql,并使用DataGrip在本地进行链接 postgresql 配置 安装postgresql 在宝塔中安装postgresql 管理器 在此处 ...
 - Vue报错Custom elements in iteration require 'v-bind:key' directives."错误解决
			
错误代码 <swiper> <swiper-item v-for="item in banners"> <a :href="item.lin ...
 - 是时候丢掉BeanUtils了
			
前言 为了更好的进行开发和维护,我们都会对程序进行分层设计,例如常见的三层,四层,每层各司其职,相互配合.也随着分层,出现了VO,BO,PO,DTO,每层都会处理自己的数据对象,然后向上传递,这就避免 ...
 - OpenApi(Swagger)快速转换成 TypeScript 代码 - STC
			
在现代的 Web 开发中,使用 OpenAPI(以前称为 Swagger)规范来描述和定义 API 已经成为一种常见的做法.OpenAPI 规范提供了一种统一的方式来描述API的结构.请求和响应,使得 ...
 - 产品代码都给你看了,可别再说不会DDD(三):战略设计
			
这是一个讲解DDD落地的文章系列,作者是<实现领域驱动设计>的译者滕云.本文章系列以一个真实的并已成功上线的软件项目--码如云(https://www.mryqr.com)为例,系统性地讲 ...