(CSP2019准备)图论专题

2024-03-08 23:38
文章标签 图论 准备 专题 csp2019

本文主要是介绍(CSP2019准备)图论专题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

T1

「NOIP2017」逛公园

题意

策策同学特别喜欢逛公园。 公园可以看成一张 N N N 个点 M M M 条边构成的有向图,且没有自环和重边。其中 1 1 1 号点是公园的入口, N N N 号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。

策策每天都会去逛公园,他总是从 1 1 1 号点进去,从 N N N 号点出来。

策策喜欢新鲜的事物,他不希望有两天逛公园的路线完全一样,同时策策还是一个特别热爱学习的好孩子,他不希望每天在逛公园这件事上花费太多的时间。如果 1 1 1 号点到 N N N 号点的最短路长为 d d d,那么策策只会喜欢长度不超过 d + K d + K d+K 的路线。

策策同学想知道总共有多少条满足条件的路线,你能帮帮他吗?

为避免输出过大,答案对 P P P 取模。

如果有无穷多条合法的路线,请输出 − 1 −1 1
对于不同测试点,我们约定各种参数的规模不会超过如下

测试点编号 T T T N N N M M M K K K是否有 0 0 0
1 1 1 5 5 5 5 5 5 10 10 10 0 0 0
2 2 2 5 5 5 1000 1000 1000 2000 2000 2000 0 0 0
3 3 3 5 5 5 1000 1000 1000 2000 2000 2000 50 50 50
4 4 4 5 5 5 1000 1000 1000 2000 2000 2000 50 50 50
5 5 5 5 5 5 1000 1000 1000 2000 2000 2000 50 50 50
6 6 6 5 5 5 1000 1000 1000 2000 2000 2000 50 50 50
7 7 7 5 5 5 100000 100000 100000 200000 200000 200000 0 0 0
8 8 8 3 3 3 100000 100000 100000 200000 200000 200000 50 50 50
9 9 9 3 3 3 100000 100000 100000 200000 200000 200000 50 50 50
10 10 10 3 3 3 100000 100000 100000 200000 200000 200000 50 50 50

对于 100 % 100\% 100% 的数据: 1 ≤ P ≤ 1 0 9 , 1 ≤ a i , b i ≤ N , 0 ≤ c i ≤ 1000 1\le P \le 10^9,1 \le a_i,b_i \le N ,0 \le c_i \le 1000 1P109,1ai,biN,0ci1000

数据保证:至少存在一条合法的路线。

题解

直观地有DP式: f [ i ] [ j ] f[i][j] f[i][j]为到i号点,路程比最短路大i的方案数,问题在于转移的顺序。若果没有0边,显然路程递增,就是满足拓扑序的,而加上0边,会产生0环,需要比较复杂的特判。考虑能否直接记忆化搜索,对于一个状态,枚举连向它的边,可以得出它由哪些状态转移过来,于是搜索下去,当发现一个状态调用自己时就判为-1,用标记数组记录哪些状态在调用中即可,这样就减少了思维和代码的难度。

T2

LOJ 2524. 「HAOI2018」反色游戏

题意

小C和小G经常在一起研究搏弈论问题,有一天他们想到了这样一个游戏.

有一个 n n n 个点 m m m 条边的无向图,初始时每个节点有一个颜色,要么是黑色,要么是白色.现在他们对于每条边做出一次抉择:要么将这条边连接的两个节点都反色(黑变白,白变黑),要么不作处理.他们想把所有节点都变为白色,他们想知道在 2 m 2^m 2m 种决策中,有多少种方案能达成这个目标.

小G认为这个问题太水了,于是他还想知道,对于第 i i i 个点,在删去这个点及与它相连的边后,新的答案是多少.

由于答案可能很大,你只需要输出答案对 1 0 9 + 7 10^9 + 7 109+7 取模后的结果.

对于所有数据,有 1 ≤ T ≤ 5 , 1 ≤ n , m ≤ 1 0 5 , 1 ≤ u , v ≤ n 1 \le T \le 5, 1 \le n, m \le 10^5, 1 \le u, v \le n 1T5,1n,m105,1u,vn ,没有重边和自环.

题解

也不知道为什么原本什么思路都没有,其实解法还是比较自然的。
对于图感觉很难做,先考虑比较特殊的情况,比如一棵树(感觉这也是一种套路吧):因为每次反色只会使偶数的黑点变为白点,故若黑点有奇数个一定无解,否则从下往上可把一条条边唯一确定是否取反。
考虑在树上加边,则每次与原树边组成一个环,那么不论这条边取什么,原树边都还是唯一确定一种取颜色的方案,于是一张连通图的总方案为 2 m − n + 1 2^{m-n+1} 2mn+1,那么设联通块个数为k,则方案数为 2 m − n + k 2^{m-n+k} 2mn+k
对于删去一个点,考虑是否会新增连通块,以及是否会使原连通块无解,维护每个点是否属于割点,以及在DFS树上,含奇数个黑点的子树个数即可。

T3

codeforces 1220E

题意

给定一颗 n n n个节点的有根树,要求从根出发,每次不能走上次走来的边,求到达节点权值和的最大值(一个节点经过多次只算一次)。
n ≤ 2 × 1 0 5 , 1 ≤ w i ≤ 1 0 9 n\le 2\times 10^{5},1\le w_i\le 10^{9} n2×105,1wi109

题解

依据题意,一个边双中的点可以互相任意到达,边双之间也可互相到达。对原图的边双缩点,变为中间是一些边双的外向树的形态,于是贪心即可。

T4

题意

给定坐标系上的n个点,将它们黑白染色,要求使得每行、每列的黑白颜色数差不超过1,输出一种方案。
数据范围: n ≤ 200000 , 1 ≤ x i , y i ≤ 200000 n\le 200000,1\le x_i,y_i\le 200000 n200000,1xi,yi200000

题解

orz直接切掉的xjq(而我一点思路都没有)
比较套路地(而我完全没想到),把每行、每列看做一个点,每个点看作对应行、列的一条连边,要求把边染色,使每个点黑、白连边颜色数只差不超过1。
先考虑黑白颜色数相等的情况,联想到用欧拉回路交替地把边染色,如果能染完就没有问题(因为每条边都是行和列之间的边)。而欧拉回路存在的条件是每个点度数都为偶数,考虑对于度数为奇数的点,因为还可以有1的误差,故把它们两两之间连边,这样用欧拉回路染色后依然合法。

这篇关于(CSP2019准备)图论专题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788802

相关文章

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

专题二_滑动窗口_算法专题详细总结

目录 滑动窗口,引入: 滑动窗口,本质:就是同向双指针; 1.⻓度最⼩的⼦数组(medium) 1.解析:给我们一个数组nums,要我们找出最小子数组的和==target,首先想到的就是暴力解法 1)暴力: 2)优化,滑动窗口: 1.进窗口 2.出窗口 3.更新值 2.⽆重复字符的最⻓⼦串(medium) 1)仍然是暴力解法: 2)优化: 进窗口:hash[s[rig

第十章 【后端】环境准备(10.4)——Vagrant

10.4 Vagrant Vagrant 官网 Vagrant 镜像仓库 下载 安装 直接 install。 设置环境变量 Vagrant 默认将镜像保存在用户文件夹的 .vagrant.d 目录下,若用户文件夹在C盘,下载的镜像文件会大量占用C盘空间。设置环境变量 VAGRANT_HOME 后,Vagrant 会将镜像保存到环境变量指定的文件夹下。

OpenStack离线Train版安装系列—2计算节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—1控制节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack镜像制作系列1—环境准备

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

hot100刷题第1-9题,三个专题哈希,双指针,滑动窗口

求满足条件的子数组,一般是前缀和、滑动窗口,经常结合哈希表; 区间操作元素,一般是前缀和、差分数组 数组有序,更大概率会用到二分搜索 目前已经掌握一些基本套路,重零刷起leetcode hot 100, 套路题按套路来,非套路题适当参考gpt解法。 一、梦开始的地方, 两数之和 class Solution:#注意要返回的是数组下标def twoSum(self, nums: Lis

我在高职教STM32——准备HAL库工程模板(1)

新学期开学在即,又要给学生上 STM32 嵌入式课程了。这课上了多年了,一直用的都是标准库来开发,已经驾轻就熟了。人就是这样,有了自己熟悉的舒适圈,就很难做出改变,老师上课也是如此,排斥新课和不熟悉的内容。显然,STM32 的开发,HAL 库已是主流,自己其实也在使用,只不过更换库就意味着教学内容有很大变化,自己也就迟迟没有迈出调整这一步。现在,是时候做出变化了,笔者计划保持教学项