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题,感觉做出来 ...
随机推荐
- .NET CORE 配置Swagger文档
1.先通过NuGet安装Swashbuckle.AspNetCore ,支持.NET core,版本是4.0.1,以上版本好像有些功能不支持 2.startup文件里注入swagger,Configu ...
- 使用Dom4j生成xml文件(utf-8编码)
xml文件内容: <?xml version="1.0" encoding="UTF-8"?> <result> <code> ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 数据类型
MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准SQL数值数据类型. 这 ...
- SQL基础教程(第2版)第5章 复杂查询:练习题
/* 下面是解答示例 */ -- 创建视图的语句 CREATE VIEW ViewPractice5_1 AS SELECT product_name, sale_price, regist_date ...
- MySQL--mysql中You can’t specify target table for update in FROM clause错误解决方法
参考:http://www.jb51.net/article/60926.htm mysql中You can't specify target table for update in FROM cla ...
- C语言-数组的深入学习
深入学习一下数组1.从内存角度来讲:数组变量就是一次分配多个变量,而且这些变量的地址是连续的,也就是存放这些变量的存储单元是依次相连接的.而且这多个变量必须单独访问,不可以一起访问的.因为他们的地址彼 ...
- 2019牛客暑期多校训练营(第七场)A.String【最小表示法】
传送门:https://ac.nowcoder.com/acm/contest/887/A 题意:大意就是给你一个只含有0和1的字符串,找出一种分割方法,使得每个分割出的字符串都是在该字符串自循环节中 ...
- Ubuntu的man中文包安装
apt-get install manpages-zh vi /etc/manpath.config :,$s#/usr/share/man#/usr/share/man/zh_CN#g 第一个命令: ...
- mysql,apache,php的关系
首先要明白动态网站与静态网站 所谓的动态网页,是指跟静态网页相对的一种网页编程技术.静态网页,随着html代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非你修改页面代码.而动态网页则不然 ...
- 利用hutool配置发送邮件的问题 及 阿里企业邮箱526 Authentication failure 错误问题
hutool 中发送邮件的配置的比较简单.可以参考hutool 官方的教程. 个人尝试了qq邮箱发送邮件 和 阿里企业邮箱发送邮件. 主要是配置不一样: 一.qq邮箱 qq邮箱 我的邮箱配置是: # ...