博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CF]Round514
阅读量:6200 次
发布时间:2019-06-21

本文共 1213 字,大约阅读时间需要 4 分钟。

A Cashier

题意:一个人,一天的工作时长为\(L\),从第\(t_i\)时刻开始有长度为\(l_i\)的工作,他想在工作间隙抽烟,抽一根要\(a\)分钟,问能抽几根。

直接模拟。

B Forgery

题意:给定一个由#.构成的矩阵,问能否用一个3*3但是中间是空的由#构成的“画笔”可以重叠的画出这个图形。

其实也是模拟,就是把给定的图中能涂的笔画全都涂上,然后比较生成的图和给定的图有何不同就行了。

C Sequence Transformation

题意:给定一个\(1..n\)的序列,定义变换为:将该序列中的所有数的\(\gcd\)放入答案序列中,然后删除一个数。求字典序最大的答案序列。

由于要字典序最大,所以要尽可能早的构造出一个非\(1\)\(\gcd\),可以想到,最好构造的(删除的数最少的)\(\gcd\)就是\(2\)(只用删除一半的数),然后就出现了一个规模更小的形式相同的问题:构造\(2,4,6,8,..\)的最大的答案序列。递归进行这个步骤就行了。注意只剩\(3\)个元素的时候,样例给出了更好的解决方案(1,1,3)。

D Nature Reserve

题意:给定一些平面上的点,问能否用一个与\(x\)轴相切的圆把它们包起来,如果能,输出最小的半径。

容易发现,如果这些点的纵坐标有正有负或有多个在\(y\)轴上,那就不可能有一个满足条件的圆。设圆心为\((x, y)\),容易发现半径就是\(y\),那么有\((x-x_i)^2 + (y-y_i)^2 \le y^2\),化简可得:\(x_i - \sqrt{y_i*(2y-y_i)} \le x \le x_i + \sqrt{y_i*(2y-y_i)}\),由于两侧的界是单调的,所以可以二分\(y\),看是否有满足条件的\(x\)

注意二分的上界是很高的,对于这样一组点\((10^7, 10^7), (-10^7, 10^7), (10^7, 1), (-10^7, 1)\),半径的长度高达\(5\cdot 10^{13}\)的级别。所以二分上界要尽可能的高一些。这样的复杂度是\(O(n\log C)\),其中\(C\)是二分上界。

这个题还有许多其他做法,比如在二分\(y\)之后,看以每个点为圆心,\(y\)为半径的的圆和直线\(y = y\)的交点判断是否有解。据说还有\(O(n \log n)\)的做法。

E Split the Tree

题意:给定一棵有根树,点有点权,问最少能用几根点数不超过\(L\)的,总点权不超过\(S\)的,直上直下的链不相交地覆盖这个树。

可以DP也可以贪心。首先预处理出每个点向上能走多远(倍增),然后对于某个点,我们可以贪心的选择儿子中的能跑的更远的点来扩展到这个点。

转载于:https://www.cnblogs.com/wyxwyx/p/cfr514.html

你可能感兴趣的文章
另一种可微架构搜索:商汤提出在反传中学习架构参数的SNAS
查看>>
互惠共赢 OPPO与爱立信签署专利许可协议
查看>>
Scala 与设计模式(三):Prototype 原型模式
查看>>
# 翻译:Shadow DOM隔离释义
查看>>
JavaScript中的垃圾回收和内存泄漏
查看>>
可能是最优雅的“云计算”科普文章了
查看>>
Android基础夯实--重温动画(四)之属性动画 ValueAnimator详解
查看>>
本科生如何选择毕设
查看>>
基于Vue2.0实现后台系统权限控制
查看>>
当你遇到 996 也满足不了的 KPI
查看>>
nginx配置文件
查看>>
0812 - 追求最佳实践
查看>>
掌握 Node.js 的 8 个技巧
查看>>
优雅的在 react 中使用 TypeScript
查看>>
【火炉炼AI】机器学习046-图像边缘的检测方法
查看>>
对称加密与非对称加密
查看>>
插件化 学习笔记
查看>>
产品经理与UI如何开展“高效”沟通?
查看>>
社区产品策划4元素:个人中心、内容、消息盒子、导航
查看>>
面试 7:快慢指针法玩转链表算法面试(一)
查看>>