原题:

Atcoder ABC244E - King Bombee

题意

给你一张图,从 \(S\) 到 \(T\),经过 \(k\) 条边, 经过 \(X\) 号点偶数次的方案数。

做法

设 \(f_{i, j, k}\) 表示经过 \(i\) 条边,现在在 \(j\),经过 \(X\) 的次数的奇偶。

初始状态:

\(f_{0, S, 0} = 1\)

状态转移:

\(f_{i, u, k} = \sum_{(u, v) \in E}f_{i - 1, v, k}(u \ne X)\)

\(f_{i, u, k} = \sum_{(u, v) \in E}f_{i - 1, v, 1 - k}(u = X)\)

即如果当前节点为 \(X\),那么从上一个节点到这个节点需要改变奇偶(因为到达 \(X\) 的点数会 \(+ 1\) 所以会改变奇偶性。

对应:

\(f_{i, u, k} = \sum_{(u, v) \in E}f_{i - 1, v, 1 - k}(u = X)\)

如果当前节点不为 \(X\),那么奇偶性不会变。

对应:

\(f_{i, u, k} = \sum_{(u, v) \in E}f_{i - 1, v, k}(u \ne X)\)

C++ 代码

记录:戳这里

#include <iostream>
#include <cstring>
#include <algorithm> using namespace std; const int N = 2010, M = 4010, mod = 998244353; struct Edge {
int to;
int next;
}e[M]; int head[N], idx; void add(int a, int b) {
idx++;
e[idx].to = b;
e[idx].next = head[a];
head[a] = idx;
} int f[N][N][2]; int n, m, k, s, t, x; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); cin >> n >> m >> k >> s >> t >> x; for (int i = 1; i <= m; i++) {
int u, v;
cin >> u >> v;
add(u, v);
add(v, u);
} f[0][s][0] = 1; for (int i = 1; i <= k; i++) {
for (int j = 1; j <= n; j++) {
for (int l = head[j]; l; l = e[l].next) {
int to = e[l].to;
for (int r = 0; r <= 1; r++) {
if (j == x) f[i][j][r] = (f[i][j][r] + f[i - 1][to][1 - r]) % mod;
else f[i][j][r] = (f[i][j][r] + f[i - 1][to][r]) % mod;
}
}
}
}
cout << f[k][t][0] << '\n';
return 0;
}

Atcoder ABC244E - King Bombee 题解的更多相关文章

  1. AtCoder ExaWizards 2019 简要题解

    AtCoder ExaWizards 2019 简要题解 Tags:题解 link:https://atcoder.jp/contests/exawizards2019 很水的一场ARC啊,随随便便就 ...

  2. AtCoder Beginner Contest 154 题解

    人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...

  3. AtCoder Beginner Contest 153 题解

    目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...

  4. AtCoder Beginner Contest 177 题解

    AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...

  5. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  6. AtCoder Beginner Contest 173 题解

    AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...

  7. AtCoder Beginner Contest 172 题解

    AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...

  8. AtCoder Beginner Contest 169 题解

    AtCoder Beginner Contest 169 题解 这场比赛比较简单,证明我没有咕咕咕的时候到了! A - Multiplication 1 没什么好说的,直接读入两个数输出乘积就好了. ...

  9. AtCoder Beginner Contest 148 题解

    目录 AtCoder Beginner Contest 148 题解 前言 A - Round One 题意 做法 程序 B - Strings with the Same Length 题意 做法 ...

  10. AtCoder Grand Contest 017 题解

    A - Biscuits 题目: 给出 \(n\) 个物品,每个物品有一个权值. 问有多少种选取方式使得物品权值之和 \(\bmod\space 2\) 为 \(p\). \(n \leq 50\) ...

随机推荐

  1. Smt贴片换料口诀及注意事项

    Smt贴片换料口诀及注意事项 一.Smt贴片送料口诀 1.若飞达没料,机器报警,操作员根据机器的提示消警 2.取出缺失飞达料,把用完的料盘取下 3.把备好的物料与换下来的料盘核对,确认无误装飞达 4. ...

  2. Linux(五)用户管理与文件权限

    1 常用的基本命令 Shell可以看作一个命令解释器,为我们提供一个交互式的文本控制台界面,可以通过终端控制台来输入命令,由shell进行解释并最终交给linux内核运行.可以看作用户和硬件的桥梁. ...

  3. SpringSecurity+Token实现权限校验

    1.Spring Security简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配 ...

  4. 「学习笔记」2-SAT问题

    SAT 是适定性 (Satisfiability) 问题的简称.一般形式为 k - 适定性问题,简称 k-SAT.而当 \(k>2\) 时该问题为 NP 完全的.所以我们只研究 \(k=2\) ...

  5. VUE旅程(2)

    继续我的vue踩坑之旅... 电商网站都会有搜索栏,输入内容后在搜索结果页面要带入搜索的关键字,需求就从这里来.代码如下: <v-search :keyword="this.$rout ...

  6. ACM中的java的使用;

    java大法好,退C保平......开玩笑的: 1.头文件: import java.math.*; // 包含大数类的包 import java.util.*; // 包含输入头的包 2.程序主体, ...

  7. express服务器框架

    Express 为了提高开发效率,我们在开发过程中,都会尽量使用别人已经开发好的第三方模块,而我们想要快速实现服务器端的开发,推荐一个当下比较流行的框架:Express Express 作为开发框架, ...

  8. Jenkins - 安装部署

    Jenkins安装部署 简介 Jenkins是一个开源的软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,提供一个开放易用的软件平台,使软件的持续集成变成可能. 主要用于: 持续 ...

  9. Django4全栈进阶之路14 项目实战(用户管理):base.html基础模板设计

    在 Django 中,我们可以使用模板继承来避免代码的重复.模板继承是指我们可以在一个模板中定义一些公共的 HTML 代码,然后在其他模板中继承这个基础模板,并根据需要添加或覆盖一些内容. 通常情况下 ...

  10. Java程序设计复习提纲(下:图形界面)

    目录 上:Java程序设计复习提纲(上:入门语法) - 孤飞 - 博客园 (cnblogs.com) 基本语法与编译运行 数据类型和关键字 常用语法 数组与字符串 异常处理 中:Java程序设计复习提 ...