day4

简单图论与构造

A

考虑把权值为 2 的点看作给权值为 1 的点加一,

所以整个问题被拆成了两个部分:构造树和给节点加一

事实上,在第一部分时我们将树构造的尽量平衡是有好处,这个结论在第二个步骤中会得到证明

构造:

Process DFS(father,ch,u,size):if size==0 then returnson[father][ch]=usize=size-1DFS(u,0,v,size/2)DFS(u,1,v',size-size/2)

然后考虑分配加一的点数,具体的需要注意到:

给一个节点加一对子树内的平衡性是不产生影响的

所以考虑从上往下贪心的分配,每次给自己加一后优先给小的子树分配一个

然后再对半分,而由于树是尽量平衡的,所以每个节点和自己的兄弟的差至多是一,是满足这个贪心的分配结构的

B

递归构造,假如某个节点的所有的子树都已经构造出了答案,

对于每个儿子 \(v\) 的答案为 \(array[v]=\{v_{state_1},v_{state_2},v_{state_3} ...\}\) ,那么考虑多元组:

\[\langle i,j,k,...\rangle=(v^{(1)}_{state_i},v^{(2)}_{state_j},v^{(3)}_{state_3},...) \]

经历如下过程:

i: 1 -> xthen j: 1 -> 2i: x -> 1then j: 2 -> 3
...then j: y-1 -> ythen k: 1 -> 2
i: 1 -> xthen j: y -> y-1...

即可

C

转化一下题意,把每次给出来的二元组看成边,那么就是要给边配对,使得配对的两条边是共用顶点的

那么我们先考虑联通图的情形,

如果是一棵树,我们考虑归纳构造:

在以 \(u\) 为根的子树内的边相互匹配,那么如果子树里有偶数个边,那么一定存在一种恰好匹配完的方式

如果有奇数个边,那么一定有一种是使得剩下的那个边是 \(u\) 连向自己的父亲的,然后放到父亲那里继续匹配(\(u\) 的兄弟节点之间匹配)

图的情况是一致的,因为在 DFS 生成树上,非树边一定是反祖边,一起放到父亲那里考虑即可

D

对于前 \(n\over 2\) 份作业,我们钦定他们谁都不能打爆谁,对于后 \(n\over 2\) 份作业,我们钦定靠前的一定能打爆靠后的,容易发现,这样的能够构造出

\[{n\over 2}\cdot{(1+{n\over 2})\cdot {n\over2}\over2}={n^3\over16} \]

次的比对,符合要求

E

简单等积变形即可

首先可以知道 \(k | n \times m \times 2\) ,然后设 \(x=\frac{n \times m \times 2} k\)

假如 \(n \ge x\) ,那么直接令底为 \(x\) ,令高为 \(1\)

假如 \(n < x\) ,那么令底为 \(n\) ,然后就可以得知高为 \(\frac x n\) ,但是这个可能是一个小数,因此就需要用等积变形把它变成一个整数的坐标。现在三角形的底是平行于坐标轴的,如下:

然后把 \((0,0)\) 抬高一个点,这样子这个三角形的底边就是倾斜的了,如下

接着右上角的那一个点就可以在灰线上乱滑了,由于斜线的斜率为 \(\frac{1}{n}\) ,就意味着这个点每向 \(x\) 轴挪一个整点,纵坐标就增加了 \(\frac{1}{n}\) 。就这样可以把 \(y\) 坐标调整到 \(\lceil \frac{x}{n} \rceil\) ,如下

其中 \(t\) 就是向左滑行的量,$t = (\lceil \frac{x}{n} \rceil - \frac{x}{n})\times n $,显然这个 \(t\) 是小于 \(n\) 的,因为 \(\lceil x \rceil - x < 1\) ,然后这个三角形的面积就是 \(\frac x 2\) 的,和题目要求一致。

F

考虑存在偶数边长的情形,那么如下构造

<--even-->
1111111111
1*1*1*1*11
11*1*1*1*1
1*1*1*1*11
1111111111

如果长和宽都是奇数的情形,如果还像上面那样构造,就会出现 \(11*11\) 的情形

这个时候考虑把某个乘号换成加号即可

1 1 1 1 1 1 1 1 1
1 * 1 * 1 * 1 * 1
1 1 + 1 * 1 * 1 1
1 * 1 * 1 * 1 * 1
1 1 * 1 + 1 * 1 1
1 * 1 * 1 * 1 * 1
1 1 * 1 * 1 + 1 1
1 * 1 * 1 * 1 * 1
1 1 1 1 1 1 1 1 1

G

简单网络流,就是二分图匹配,考虑每个左边的点向右边的自己的因子连边权为一边,然后右边的每个数向超级汇点连一个边权为一的边即可

H

最小割,把每个 \(x\) 节点拆成三个点 \(x_1,x_2,x_3\) 然后连边:

\[(x_1) \longrightarrow^1 (x_2)\longrightarrow^\infin (x_3) \]

对于所有的指向 \(x\) 的边,通过如下方式确定其终点:

  • 如果检查站设置在 \(x\) ,那么这个边的指向 \(x_1\)

  • 否则这个边指向 \(x_3\)

对于所有从 \(x\) 出发的边,通过如下方式确定其起点:

  • 如果检查站设置在 \(x\) ,那么这个边的起点是 \(x_2\)
  • 否则这个边的起点是 \(x_3\)

对于每个边,我们有唯一的方式确定了其起点和终点,所以图是确定的(定义是良性的)
然后跑最小割即可。另外注意算法的常数,传说有人的 dinic 被卡了

I

先考虑一个强连通分量里的情形,一个强连通分量能在自身内无限循环的充要条件是

  • 在该强连通分量内存在一条边权和不为零的回路

所以可以把这个强连通分量抽出来跑 dfs 生成树即可

然后显然一个强连通分量能无限循环的条件为以下二者之一或者二者全部:

  • 这个强连通分量能自身无限循环
  • 这个强连通分量能去到无限循环的强连通分量

所以简单跑一下 tarjan 即可

J

我们把每段圆弧看作向量:

\[\vec a=\left [ \begin{align}r\\r\end{align} \right] \]

那么要做的就是给每个向量的两个分量安排正负使得所有向量之和为零向量

然后先看要求光滑连接这个条件,实际上就是要求 \(n\) 是偶数,因为你总是以正负交替的方式来安排各个圆弧的方向

那么实际上就是要在这 \(n\)\(r\) 中选取若干个使得:

\[\sum_{i被选择}r_i={\sum r_i\over2} \]

然后你要两个分量都有的选,所以总共要有至少 4 种不同的选法才行,所以就是背包计数

K

分层图+最短路即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/879920.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Omnissa Horizon Windows OS Optimization Tool 2412 - Windows 系统映像优化工具

Omnissa Horizon Windows OS Optimization Tool 2412 - Windows 系统映像优化工具Omnissa Horizon Windows OS Optimization Tool 2412 - Windows 系统映像优化工具 Optimizing Images Using Omnissa Horizon Windows OS Optimization Tool 请访问原文链接:https://sysin.org/…

BOM最全基础信息:标准件、通用件、替换件、必选件

在生产制造领域,物料清单(BOM)是产品设计、生产计划和供应链管理的核心基础。本文系统梳理了BOM中各类零部件的分类方法,供大家参考。在生产制造的复杂领域中,我们会与各式各样的产品组成部分打交道。清晰、准确地对它们进行分类,并实施有效的管理,对于提升生产效率、保…

人工智能辅助芯片设计

芯片设计:一个近乎无限的问题空间 设计复杂性呈指数级增长 设计复杂性的含义 一连串棘手的问题 贯穿整个流程优化 HDL生成研究 使用GCN加速设计评估 人工智能辅助验证 参考文献链接https://www.hc2024.hotchips.org/assets/program/tutorials/3-HC24.synopsys.SteliosDiaman…

应用随机过程 | 期末 cheat sheet

出分后发布笔记……这篇博客汇总了「应用随机过程」2018 - 2022 的期末试题,并根据题型分类总结。 本站相关博客:应用随机过程 | 期末知识点总结特别鸣谢:知乎 | 九一居士 |《应用随机过程》课程笔记系列目录1 马尔可夫链计算题2 常返的马尔可夫链3 连续时间参数的马尔可夫链…

推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》4本书,非常感谢

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

OpenVX基本原理与历史

OpenVX基本原理 2.1 引言 2.1.1 摘要 OpenVX 是一个低级编程框架域,用于支持软件开发人员,可高效访问计算机视觉硬件加速功能和性能的可移植性。OpenVX 旨在支持现代硬件架构,例如,移动和嵌入式 SoC 以及桌面系统。其中许多系统是并行和异构的:多个处理器类型包括多核 CPU…

L4D2自制角色Mod - HUI篇

如何以相对简易的思路自制求生之路2求生者头像Mod本文是笔者尝试制作 求生之路2 角色 Mod 的过程中编写的笔记,笔者的背景是有基础的计算机知识和图像处理软件的使用经验,相信大多数读者朋友都有同样的水平。本文面向希望能快速简单地自定义游戏内角色图像/模型,但对更深层次…

使用Netty与前端请求进行交互实现实时通讯

引言因为不满足与一般的SpringBoot CRUD开发(太无聊了)所以去学一下网络编程,第一站就是通过B站老罗的EasyChat项目了解到了Netty这个网络框架,在学习这个项目之前也是去学习了一下Netty框架的使用以及相关的原理知识所以是有一定了解的,但是只是一味的学习不去实践总感觉是空中…

如何使用 Filebeat 8 连接 Easysearch

在日志场景,还是有很多小伙伴在使用 Filebeat 采集日志的。今天我来实战下使用 Filebeat 8 连接 Easysearch 。本次使用 Easysearch-1.9.0 版本和 Filebeat-8.17.0 版本做演示,也适用 Filebeat-oss-8.17.0 版本。 Easysearch 不开启兼容参数的情况 Easysearch 默认情况下未开…

25.2.7小记

异常捕捉 try{} catch{} import java.util.Scanner;public class ArrayIndex {public static void main(String[] args) {int [] a =new int[10];int idx;Scanner in = new Scanner(System.in);idx = in.nextInt();try{a[idx] = 10;System.out.println("hello");}cat…

《笨办法学Python3》PDF、EPUB免费下载

本书是一本Python入门书,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用。这本书以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现,让初学者从基础的编程技术入手,最终体验到软件开发的基本过程。本书是基于Python 3.6版本编…