博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #514 (Div. 2)题解
阅读量:5846 次
发布时间:2019-06-18

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

Codeforces Round #514 (Div. 2)题解

A

喵,直接模拟。

B

枚举所有盖章时的,合法的,左上角的位置。能盖的话就盖一下。最后check一下图案是否相等即可

C

  • 一轮一轮的扔。
  • 如果\(len \geq 4\), 扔掉\(1,3,5,7....\)的位置。
  • \(len=3\), 扔\(2,1,3\)
  • \(len=2\), 扔\(1,2\)
  • \(len=1\), 扔\(1\)

为什么这样构造呢?因为\(x,x+1\)肯定是互质的,所以我们先扔掉所有奇数。这样我们才可以在\((len+1)/2\)轮后使得所有数字的\(gcd\),乘\(2\)

D

  • 二分半径\(r\)
  • 那么,圆心一定在直线\(y=r\)上啦。
  • 对于每个点,圆心合法的位置是一个区间,判断区间交是否为空即可。
  • 为什么可以二分?因为\(r\)越大,每个\(r\)对应的合法区间就越长吖。

E

比赛的时候70分钟都没A掉。打得烂!

  • 我们先考虑一条链。对于每个点,维护它最远能往上跳多远,那么每个点都会对应着一个区间\([l,r]\),现在我们需要选择最少的区间使得整个链都被覆盖。这是很经典的贪心问题啦!
  • 这个题,无非是把链的问题放在了树上。考虑节点\(u\),我们用\(dp[u]\)表示覆盖\(u\)的子树,最少需要几条路径,\(low[u]\)表示,\(u\)的子树中,最高能跳到哪一层。

转移:

dp[u] = max{dp[v]}; low[u] = min{low[v]};if (low[u] > dep[u]) dp[u] ++, low[u]=up[u];

转载于:https://www.cnblogs.com/RUSH-D-CAT/p/9752227.html

你可能感兴趣的文章
一元多项式相加
查看>>
commandLink/commandButton/ajax backing bean action/listener method not invoked (转)
查看>>
软件工作的大环境
查看>>
梅沙教育APP简单分析-版本:iOS v1.2.21-Nathaneko-佳钦
查看>>
Word中如何设置图片与段落的间距为半行
查看>>
JQuery this和$(this)的区别及获取$(this)子元素对象的方法
查看>>
关于分区索引与全局索引性能比较的示例
查看>>
C语言之指针与数组总结
查看>>
沟通:用故事产生共鸣
查看>>
1080*1920 下看网站很爽
查看>>
Android类参考---Fragment(一)
查看>>
CMake 构建项目Android NDK项目基础知识
查看>>
MySQL 不落地迁移、导入 PostgreSQL - 推荐 rds_dbsync
查看>>
[Erlang 0004] Centos 源代码编译 安装 Erlang
查看>>
51 Nod 1027 大数乘法【Java大数乱搞】
查看>>
三维重建技术概述
查看>>
AI x 量化:华尔街老司机解密智能投资正确姿势
查看>>
IT史上十大收购案
查看>>
数据切分——Atlas介绍
查看>>
游戏引擎cocos2d-android使用大全
查看>>