【学习笔记】AGC010

多做 AGC 长脑子

不给样例,光靠脑子想

Rearranging

  • 考虑如果两个数不互质,那么它们在最终序列相对位置不变
  • 因此对两个不互质的数连边,同时对每条边定向构造 DAG
  • 答案就是最大的拓扑序,因为考虑一个点没有入度的话可以和任何其他的点交换
  • 贪心的构造 。从编号最小的点开始 dfs ,每次找节点编号最小的出边,可以理解成构造了一颗树 。
  • 然后模拟就行了 (

Tiling

  • 贪心的考虑如何最大限度将网格铺满
  • 显然将网格剖分成若干个 2x2 的矩阵是最优的
  • 边角料就铺对应的横砖或竖砖
  • 这样一定能最大化铺砖的数量
  • 手玩发现 n=3,m=3,A=2,B=2 的情况会有问题
  • 也就是说对于最后一个 2x2 的方格,还剩横砖和竖砖各一个,理论上能铺两块砖,但是由于形状原因只能铺一块

请添加图片描述

  • 注意到右下角还空了一个位置,可以通过调整放下 。

请添加图片描述

  • 直接分两种方案 check 即可 。
  • 类似的题目还有 Nastia and a Beautiful Matrix ,从 最大化利用网格空间 入手,找到局部最优,进而构造出全局最优解 。

Three Circuits

  • 每个点的度数都必须是偶数
  • 题目给了这是一个连通图,所以一定存在欧拉回路
  • 如果存在点的度数 >=6 ,那么必然有解(考虑从欧拉回路角度去证
  • 记度数 = 4 的点个数为 cnt
  • 如果 cnt=0 ,那么最多只能构造出一个环
  • 如果 cnt=1 ,那么最多只能构造出两个环
  • 如果 cnt=2 ,那么有两种情况(画图感知:可能构造出两个环或三个环
  • 如果 cnt>=3 ,那么去掉一个简单环后归纳到 cnt=2 的情况,最少能构造出三个环

Decrementing

  • 如果存在 a i = 1 a_i=1 ai=1 ,那么判断 ∑ ( a i − 1 ) \sum{(a_i-1)} (ai1) 的奇偶性 。
  • 定义 ∑ ( a i − 1 ) \sum{(a_i-1)} (ai1) 奇数时为胜态,偶数时为负态
  • 如果当前正在操作的人为胜态,那么无论另一个人怎么操作,当前这个人必胜
  • 因为考虑如果没有所有数都除以最大公约数这个操作的话, ∑ a i \sum a_i ai 的奇偶性不会变化,那么 ∑ ( a i − 1 ) \sum (a_i-1) (ai1) 的奇偶性也不会变化,胜负态是固定的
  • 现在相当于 ∑ a i → ∑ a i x \sum{a_i}\to \frac{\sum{a_i}}{x} aixai ,当且仅当 x x x 是偶数且 ∑ a i x \frac{\sum{a_i}}{x} xai 为奇数时才行
  • 记序列中奇数的个数为 cnt ,初始因为互质所以 cnt>=1 ,那么两个人轮流操作,后手的人永远无法让 cnt=0 (n>=3 时)
  • 如果当前操作的人为败态,那就操作唯一的奇数,这样有可能逆转胜负 。
  • 因此直接模拟 。最多不会超过 log ⁡ a \log a loga 次 。

Balancing Network

题面好长

  • T = 1 T=1 T=1
  • 论思路正确的重要性
  • 假设我们已经知道了最终的导线 x x x ,倒序考虑每个平衡器
  • v i v_i vi 表示能否到达导线 x x x
  • 如果 v a = v b = 1 v_a=v_b=1 va=vb=1 v a = v b = 0 v_a=v_b=0 va=vb=0 显然没有用处
  • 如果 v a = 1 , v b = 0 v_a=1,v_b=0 va=1,vb=0 或者 v a = 0 , v b = 1 v_a=0,v_b=1 va=0,vb=1 那么 v a = v b = 1 v_a=v_b=1 va=vb=1
  • 这样我们可以构造方案
  • 现在我们顺序考虑, s x s_x sx 表示从起点出发能到达导线 x x x 的集合
  • 手玩样例可以得到 s x = s y = s x ∪ s y s_x=s_y=s_x\cup s_y sx=sy=sxsy
  • 找到是否存在 ∣ s x ∣ = n |s_x|=n sx=n 并构造 。
  • 证明可以考虑从每个导线出发跑一遍,给每个平衡器定向,可以发现一个平衡器不会被正反定向两次
  • 实现用 bitset 。
  • T = 2 T=2 T=2
  • 猜不到结论哩:当 N = 2 N=2 N=2 时无解, N > 2 N>2 N>2 时一定有解 (下面给出构造)
  • 还是手玩,发现 N = 3 N=3 N=3 时无论如何都有解
  • 瞎想了一会感觉没啥思路 然后看题解
  • 还是逆向考虑,设 e d i ed_i edi 表示导线 i i i 的最终位置, c n t i cnt_i cnti 表示最终位置为 i i i 的个数
  • 如果 e d a = e d b ed_a=ed_b eda=edb 显然没有用处
  • 注意到 c n t i cnt_i cnti 不会有重复
  • 所以不会出现 c n t e d a = c n t e d n = n − 1 cnt_{ed_a}=cnt_{ed_n}=n-1 cnteda=cntedn=n1 的情况 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值