Codeforces Round #200 (Div. 1 + Div. 2)

本文解析了多项算法竞赛题目,包括磁铁模拟、简单分子结构分析、理性电阻计算、交流电路径匹配、阅读时间估算、水树网络更新及泵站序列构建等问题,通过深入浅出的方式介绍了每道题目的解题思路。

A. Magnets

  • 模拟。

B. Simple Molecules

  • 设12、13、23边的条数,列出三个等式,解即可。

C. Rational Resistance

  • 题目每次扩展的电阻之一是1Ω的,所以假设当前的电阻为\(\frac{a}{b}\)会变成\(\frac{a+b}{b}\)\(\frac{a}{a+b}\),其实就是求gcd的过程。

D. Alternating Current

  • 若出现连续两个相同的符号,其实线的方向是不变的,最后就是转化成括号匹配。

E. Read Time

  • 二分时间\(t\)\(p_1\)应该由\(h_1\)来覆盖,此时分两种情况:
    1. \(h_1<=p_1\)\(h_1\)覆盖区间\([h_1, h_1+t]\)
    2. 否则,\(h_1\)此时有两种覆盖\(p_1\)的方法:先覆盖\(p_1\),然后马上往回走;先往后覆盖,然后返回\(p_1\)。在这两种方法找覆盖区间最大的。

F. Water Tree

  • 对于操作1,利用dfs序转化成区间覆盖问题,覆盖的值为最大操作id。
  • 对于操作2,点\(v\)影响它的所有祖先,dfs序下这些祖先的区间都包含点\(v\),那么就相当于祖先查询区间最大的操作id。
  • 整个问题就变成区间修改+单点查询和单点修改+区间查询问题。
  • 更简单的做法:用一个set维护所有empty链,对于操作1来说,直接暴力删除区间内的链;操作2则直接将点\(v\)插入,表示\(v\)到根的empty链。

G. Pumping Stations

  • 本题的关键在于构出最小割树,在这前提下,根作为序列第一个值,每次贪心地取和序列最后一个点流最大的点,构出序列。

转载于:https://www.cnblogs.com/mcginn/p/6653710.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值