Codeforces Round #572 (Div. 1) 差E
Codeforces Round #572 (Div. 1)
A2
题意:给一棵树,带边权,互不相同且为偶数。每次操作是选两个叶子然后在路径上同时加一个数。初始边权全是0,求一个操作序列使得最终边权与给定边权相同。 \(n \le 1000\) ,构造的序列长度不超过 \(10^5\)
key:构造
首先,如果有二度点,那么一定无解。
所以现在每个点要不是叶子,要不就至少是三度。考虑一条边,我们只把它的边权改变,而不改变其他边。此时需要讨论这条边两段的点的度数。
如果两个点都是大于等于三度的,那么可以在一端中找到两个叶子,使得它俩的lca就是这个点。由于边权都是偶数,设其为2k,那么只需 add(a1,b1,k), add(a2,b2,k), add(a1,a2,-k), add(b1,b2,-k) 即可。其他情况同理
C
题意:给一个序列 \(b_i\) ,定义一个序列的 beauty 为 \(\min_{1\le i<j\le n}|a_i-a_j|\) 。求 \(b_i\) 中所有长度恰好为 k 的子序列的 beauty 之和。 \(k \le n \le 1000, b_i \le 10^5\)
key:dp
首先排序,然后考虑枚举beauty。可以发现 i 的转移是一个前缀和,并且随 i 单调不降,所以有一个O(n*k) 的dp。
其实真正有用的beauty不多,至多是 \(\frac{10^5}{k-1}\) ,所以复杂度是 \(O(10^5*n)\)
D
题意:给出 n 个数,每次操作是给一个数加上一个2的幂。求最少多少次操作使得整个序列的数字相同。 \(n \le 10^5, a_i \le 10^{17}\)
key:二进制,dp
显然最后全都相同的那个数至少是给定序列的最大值。并且 x 变成 y 所用的操作次数是 y-x 中二进制 1 的个数。
所以首先用最大值减去所有的数字得到新序列 \(b_i\) ,问题变成:给 \(b_i\) 加上一个数 t,使得所有数字的二进制中 1 的个数之和最小。
考虑 dp :只需要记录当前位的进位情况就能转移。但这样的状态空间是 \(2^n\) ,然而实际情况是远远小于的。
进位发生时,当且仅当 \(t \% 2^k+b_i\%2^k \ge 2^k\) 。所以如果对 \(b_i\) 按后 k 位二进制大小排序,那么只可能是一个后缀在进位。所以状态空间变成 O(n)
所以每次转移时,只需要枚举进位情况,然后枚举当前是0还是1,计算进位数。这个进位数一定是下一个状态的后缀,所以直接转移即可。如果排序用计数排序实现,那么复杂度是 \(O(62*n)\)
Codeforces Round #572 (Div. 1) 差E的更多相关文章
- Codeforces Round #573 (Div. 1) 差F
Codeforces Round #573 (Div. 1) E 题意:二维平面上有 n 个点,你可以放至多 m 条直线使得 (0,0) 与每个点的连线至少与一条直线相交.求原点与所有直线的距离最小值 ...
- Codeforces Round #364 (Div. 1) (差一个后缀自动机)
B. Connecting Universities 大意: 给定树, 给定2*k个点, 求将2*k个点两两匹配, 每个匹配的贡献为两点的距离, 求贡献最大值 单独考虑每条边$(u,v)$的贡献即可, ...
- Codeforces Round #572 (Div. 2)
目录 Contest Info Solutions A. Keanu Reeves B. Number Circle C. Candies! D1. Add on a Tree D2. Add on ...
- Codeforces Round #401 (Div. 2) 离翻身就差2分钟
Codeforces Round #401 (Div. 2) 很happy,现场榜很happy,完全将昨晚的不悦忘了.终判我校一片惨白,小董同学怒怼D\E,离AK就差一个C了,于是我AC了C题还剩35 ...
- Codeforces Round #114 (Div. 2)
Codeforces Round #114 (Div. 2) 代码 Codeforces Round #114 (Div. 2) C. Wizards and Trolleybuses 思路 每条车的 ...
- Codeforces Round #373 (Div. 2)A B
Codeforces Round #373 (Div. 2) A. Vitya in the Countryside 这回做的好差啊,a想不到被hack的数据,b又没有想到正确的思维 = = [题目链 ...
- Codeforces Round #368 (Div. 2) C. Pythagorean Triples(数学)
Pythagorean Triples 题目链接: http://codeforces.com/contest/707/problem/C Description Katya studies in a ...
- Codeforces Round #275 (Div. 2) C - Diverse Permutation (构造)
题目链接:Codeforces Round #275 (Div. 2) C - Diverse Permutation 题意:一串排列1~n.求一个序列当中相邻两项差的绝对值的个数(指绝对值不同的个数 ...
- Codeforces Round #525 (Div. 2)
Codeforces Round #525 (Div. 2) 哎,忍不住想吐槽一下,又要准备训练,又要做些无聊的事,弄得我都想退出了. 好好的训练不好么???? 只能做出两道水题,其实C题,感觉做出来 ...
随机推荐
- Idea 中的快捷键(mac)
Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ...
- 线上环境 分析java问题 常见命令
在生产上进程需要分析jvm运行情况,今天分享几个自己常用的命令,持续更新,欢迎补充 1.jps jstack -l {pid} > jstack.log #查看线程快照信息 2.jps jmap ...
- [APIO2018]铁人两项(圆方树)
过了14个月再重新看这题,发现圆方树从来就没有写过.然后写了这题发现自己APIO2018打铁的原因竟然是没开long long,将树的部分的O(n)写挂了(爆int),毕竟去年APIO时我啥都不会,连 ...
- CDH6.2安装配置第二篇:CDH安装的前期配置
本篇介绍cdh安装之前需要的一些必要配置,当然这些配置也可以用shell脚本来配置.在安装之前请先配置好yum源,在文中用的统一都是阿里源.在安装的时候,要确保主机的内存是4G以上,要不然会无限重启c ...
- 工程日记之HelloSlide(3):如何使用Core Data数据库,以及和sqlite之间的对应关系
Core Data 和 SQLite 是什么关系 core data是对sqlite的封装,因为sqlite是c语言的api,然而有人也需要obj-c的api,所以有了core data ,另外,co ...
- Freemarker的一点延生
1.freemarker一般不是单独使用,他可以和activeMQ互相结合,来完成功能的. 使用它有 几点好处, 首先就是提高程序效率,一般情况我们的页面都是jsp,而jsp实际上是servlet,在 ...
- 使用plantuml插件
安装 https://github.com/jvantuyl/sublime_diagram_plugin 安装依赖 brew install graphviz 把sublime_diagram_pl ...
- Nginx无法监听虚拟VIP的问题报:99: Cannot assign requested address
99: Cannot assign requested address #本地网卡上没有10.0.0.3这个IPNginx就会报错: [root@lb01 conf]# /application/ng ...
- 经理人和app开发者大打出手,说明这个市场已经畸形变态?
日前,一件民生事件在网络上广为流传,成为人们热议的话题:中国平安的产品经理向app开发者提了一个需求,要求用户app的主题颜色能根据手机外壳自动调整,可能是开发人员觉得这个要求太不合理,而且感到十分绝 ...
- [Java-基础] 注解
引言 在进行Spring Boot 入门的时候,主程序需要@SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用.这个的作用是什么?去掉的话会报错.如 ...