[转自官方]2016 Multi-University Training Contest 2 solutions BY zimpha
来源:互联网 发布:java开源架构 编辑:程序博客网 时间:2024/05/03 13:39
原地址:
http://bestcoder.hdu.edu.cn/blog/2016-multi-university-training-contest-2-solutions-by-zimpha/
Acperience
展开式子,
由于
化简下, 可以得到最小值是
Born Slippy
感谢叉姐在ICPCCamp上出的这道题最初的原型 — Data Structure You’ve Never Heard Of, 同样感谢Claris老师的教导.
由于and, or和xor方法都差不多, 这里仅考虑and操作. 不妨令
先考虑序列上应该如何做, 即求
如果知道了上述数组, 那么对于某个
上述方法推广到树上也是十分简单, 由于每次更新
Call It What You Want
这个图大概就是一棵树, 然后最多加了5条边. 首先通过不断删掉度为1的点, 把这个图中属于树的部分全部砍掉, 那么我们会得到一个没有度等于1的点的图. 之后把图中度为2的点都缩掉, 最后得到一个图每个点的度至少为3. 显然最后得到的图最多只有8个点, 12条边(也许是10个点, 14条边, 但是随机出来的数据没有这种情况, 大概8个点12条边就是上界了吧).
考虑最长路的组成, 可以分为2种情况: 1. 在砍掉的树部分上; 2. 树上一条链+最终图上的一条路径+树上另一条链.
对于第一种情况, 在删度为1节点的时候就可以顺便计算出每个点
第二种情况有点复杂, 主要麻烦的地方在于多出来的2条链, 它们的位置有多种情况. 可能是在同一条边中延伸出来; 可能是在同一个环上延伸出来; 可能在两个不同的环上; 可能一个在环上, 另一个在普通边上. 根据这些情况, 大概要预处理出一些东西, 然后考虑枚举12条边的经过顺序, 然后在路径2边接上树上的链. 枚举经过顺序过程可以用状态压缩dp来优化. 需要注意的是最终图上的边也许会有重边.
Nero爷提供了一个比较暴力的方法, 和上面方法类似, 先把树上的一些东西都搞完, 接下来考虑多出的5条非树边. 那么可以5!暴力枚举这5条非树边的经过顺序(可能还要枚举下方向), 显然剩下来一定是要经过树边, 直接用树边把这些边接起来就好了(这里直接暴力bfs或者dfs就好了, 需要注意非树边上的点不要重复经过). 这个方法在测试的时候开长时限给放过了, 不知道比赛时候会不会因为一些不可知的原因而炸掉.
Differencia
感谢Claris老师教我如何卡常数 — 只要数据范围够大就好了.
这道题
上面方法稍作修改就可以得到一个
这个题应该还可以用平衡树+可持久化线段树做到
Eureka
xjb推导一下可以知道best set一定是一些共线的点, 于是问题变成问有多少个子集共线. 首先, 把所有点按照
Fantasia
显然, 只要删掉关键点才会使图不联通. 对于其他点, 权值很容易计算.
首先求出所有的点双联通分量, 对于每一个点双联通分量
对于这个森林
Glorious Brilliance
首先对图二分染色, 如果不是二分图, 显然是无解的.
考虑给出图是连通二分图(不连通可以拆成若干个连通块分开搞)的时候, 枚举二分图两边集合的颜色, 观察下0和1的数目对不对. 如果是对的, 接下来考虑如何找到最少步数.
对于两个点
不妨设
知道交换次数是最短路之后, 我们只搞清楚枚举谁和谁交换即可. 显然这是一个二分图最小权匹配问题, 可以套用KM或者费用流解决. 至于方案构造, 上面的证明就已经提供了构造方案. 确定匹配之后, 找出最短路, 然后对应地操作即可.
Helter Skelter
可以注意到对于一个固定的
H
显然, 求出这个上下边界这道题目就搞定了. 考虑求下边界, 观察上图可以知道, 求出所有红色的点就可以确定这个下边界. 同样, 所有绿色的点就可以确定上边界. 一个显然的猜想就是这些边界点肯定是由一些连续的run组成的, 红色点的run肯定是从0开始, 以0结尾, 绿色则是从1开始, 以1结尾. 假装这个猜想是对的, 接下来就是枚举这些连续的run, 然后随便排序下这些点对, 利用类似凸包的方法就可以求出这些红色or绿色的点. 确定了上下边界之后, 对于一个询问
It’s All In The Mind
令
Join The Future
对于题目给出的
Keep On Movin
如果每个字符出现次数都是偶数, 那么答案显然就是所有数的和. 对于奇数部分, 显然需要把其他字符均匀分配给这写奇数字符. 随便计算下就好了.
La Vie en rose
题目给出的变换规则其实就是交换相邻元素, 并且每个元素最多交换一次. 那么一个
这个dp数组里面存的都是bool值, 可以考虑用bitset压缩这个dp数组中的第一维
Memento Mori
虽然这题长着像分类讨论, 但是实际上不需要分类讨论.
显然最终的子矩形的左右边界会被两个1卡住, 不妨考虑枚举这两个1. 枚举完之后, 可以发现根据和排列
先把所有的1按照行优先的顺序排序, 考虑枚举做边界
还需要注意同一行/列内有多个
- [转自官方]2016 Multi-University Training Contest 2 solutions BY zimpha
- 2017 Multi-University Training Contest 2 solutions BY 电子科技大学
- 2017 Multi-University Training Contest 2 solutions BY UESTC
- 2017 Multi-University Training Contest 2 solutions BY 电子科技大学
- [多校补题]2017 Multi-University Training Contest 2 solutions BY 电子科技大学
- 2017 Multi-University Training Contest 1 solutions BY BUAA
- 2017 Multi-University Training Contest 1 solutions BY 北京航空航天大学
- 2017 Multi-University Training Contest 1 solutions BY 北京航空航天大学
- 2017 Multi-University Training Contest 1 solutions BY 北京航空航天大学
- 2017 Multi-University Training Contest 3 solutions BY 洪华敦
- 2017 Multi-University Training Contest 4 solutions BY 陈松杨
- 2017 Multi-University Training Contest 5 solutions BY 吉如一
- 2017 Multi-University Training Contest 6 solutions BY 福州大学
- [多校补题]2017 Multi-University Training Contest 3 solutions BY 洪华敦
- [多校补题]2017 Multi-University Training Contest 4 solutions BY 陈松杨
- [多校补题]2017 Multi-University Training Contest 6 solutions BY 福州大学
- 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)
- 2017 Multi-University Training Contest 1 solutions BY 北京航空航天大学(1)
- 【sphinx】mysql 配置文件 仅支持几个属性类型
- 如何反编译APK(转载自网络)
- 1032. 挖掘机技术哪家强
- java.lang.IllegalArgumentException
- 清空listview中的所有item
- [转自官方]2016 Multi-University Training Contest 2 solutions BY zimpha
- 基于FL2440开发板实现蜂鸣器唱歌的原理
- php Captcha 練習
- HDU 5742 It's All In The Mind(水题【多校联合】)
- 巴氏(bash)威佐夫(Wythoff)尼姆(Nim)博弈之模板
- Monthly Expense
- java实现顺序栈
- RelativeLayout 属性含义
- android开发 重启app