Educational Codeforces Round 89 题解
昨晚简单 vp 了场比赛找了找状态,切了 5 个题(有一个差点调出来),rk57,还算理想吧,毕竟我已经好久没碰过电脑了(
A
签到题不多说,直接输出 \(\min\{a,b,\dfrac{a+b}{3}\}\) 即可
B
对于每次操作维护一个区间 \([l,r]\) 表示有可能是 \(1\) 的位置组成的集合(显然是一个区间),初始 \(l=r=x\),每次操作如果 \([l,r]\) 和操作的区间有交那么取个并即可,复杂度线性
C
开个桶记录下到 \((1,1)\) 距离为 \(1,2,3,\cdots,n+m-1\) 的点中分别有多少个 \(0,1\),然后在对称的位置里面取 \(\min\) 相加即可,复杂度线性
D
如果 \(n\) 可以表示成 \(p^{\alpha}\) 的形式,其中 \(p\) 是质数,\(\alpha\) 是整数,那么答案就是 \(-1\),否则记 \(mnp_x\) 为 \(x\) 的最小质因子,\(\beta\) 为 \(mnp_n\) 在 \(n\) 的质因数分解形式中的最大因子,那么 \(\dfrac{n}{p^{\beta}},mnp_{\dfrac{n}{p^{\beta}}}\) 符合条件
E
对于每一段二分找出这一段可能的左端点、右端点,然后乘法原理乘起来即可,二分检验可用 ST 表
F
这道题还蛮有意思的,比赛最后几分钟肝出来了,却因为爆 int 一直 WA 8,赛后 2min 把它 A 掉了……
首先注意到图中每个简单路径的长度都 \(\le m\),因此当 \(k\) 比较大(\(>m\))组成的路径肯定不是简单路径,故不难猜出当 \(k\) 比较大时最优方案是先走到某条边 \(e\) 的一个端点处,然后在这条边上来回走动,在这种情况下每过一秒经过的长度 \(\Delta l\) 都等于这条边的边权 \(w\),因此这条边经过的路径长度可以写成一个与时间 \(t\) 有关的一次函数 \(y=wt+b(t\ge t_0)\),其中 \(t_0\) 为到达这条边的时间。
受到这个思想的启发,我们可以先暴力 \(dp\) 求出当 \(k\le m\) 时以每个点结束的最短路径,这部分的贡献我们特殊处理一下,特判掉。对于 \(k>m\) 的部分我们就暴力枚举是哪条边,以及到达这条边的时间 \(t_0\),这样有 \(n^2\) 条直线(或者准确来说,是一条射线),求出它们的凸壳即可,复杂度 \(n^2\log n\) 可以通过。当然这里也有一个非常 trival 的优化,不难发现同一条边,对于不同的 \(t_0\),它们表示的直线的斜率是相同的,我们只需保留截距最大的那条即可。这样建凸包的时间可以降到 \(n\log n\),总复杂度 \(nm+n\log n\)。
G
这道题倒感觉不如 F 有意思,虽然我现场并没有想到正解,可能是我 \(dp\) 太菜了吧
一个很显然的思路是设 \(dp_{i,j}\) 表示考虑了前 \(i\) 位,现在匹配到第 \(j\) 位的最小删除字符个数。这一步我倒是想到了,然鹅我只想到了线性的转移,看来还是 wtcl 了啊……
事实上这个状态可以实现 \(\mathcal O(1)\) 转移:
- \(dp_{i+1,j}\leftarrow dp_{i,j}+1\)
- \(dp_{i+1,j+1}\leftarrow dp_{i,j}(s_{i+1}=t_{j+1})\)
- \(dp_{nxt_i,j}\leftarrow dp_{i,j}\)(其中 \(nxt_i\) 为从 \(i\) 开始,如果把小写字母当作左括号,点当作右括号,第一个达到括号平衡的位置)
时空复杂度均平方。
Educational Codeforces Round 89 题解的更多相关文章
- Educational Codeforces Round 89 (Rated for Div. 2) C. Palindromic Paths(贪心)
题目链接:https://codeforces.com/contest/1366/problem/C 题意 有一个 $n \times m$ 的 $01$迷宫,要使从 $(1,1)$ 到 $(n,m) ...
- Educational Codeforces Round 89 (Rated for Div. 2) B. Shuffle(数学/双指针)
题目链接:https://codeforces.com/contest/1366/problem/B 题意 大小为 $n$ 的数组 $a$,除了 $a_x = 1$,其余 $a_i = 0$,依次给出 ...
- Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords(贪心/数学)
题目链接:https://codeforces.com/contest/1366/problem/A 题意 有两个数 $a$ 和 $b$,每次可以选择从一个数中取 $2$,另一个数中取 $1$,问最多 ...
- Educational Codeforces Round 89 (Rated for Div. 2) C Palindromic Paths
题目链接:Palindromic Paths 题意: 给你一个n行m列的矩阵,这个矩阵被0或者1所填充,你需要从点(1,1)走到点(n,m).这个时候会有很多路径,每一条路径对应一个01串,你可以改变 ...
- Educational Codeforces Round 19 题解【ABCDE】
A. k-Factorization 题意:给你一个n,问你这个数能否分割成k个大于1的数的乘积. 题解:因为n的取值范围很小,所以感觉dfs应该不会有很多种可能-- #include<bits ...
- Educational Codeforces Round 55 题解
题解 CF1082A [Vasya and Book] 史上最难A题,没有之一 从题意可以看出,翻到目标页只有三种办法 先从\(x\)到\(1\),再从\(1\)到\(y\) 先从\(x\)到\(n\ ...
- Codeforces Educational Codeforces Round 54 题解
题目链接:https://codeforc.es/contest/1076 A. Minimizing the String 题意:给出一个字符串,最多删掉一个字母,输出操作后字典序最小的字符串. 题 ...
- Educational Codeforces Round 89 (Rated for Div. 2) A Shovels and Swords B、Shuffle
题目链接:A.Shovels and Swords 题意: 你需要一个木棍和两个钻石可以造出来一把剑 你需要两个木棍和一个钻石可以造出来一把铁锹 你现在有a个木棍,b个钻石,问你最多可以造出来几件东西 ...
- Educational Codeforces Round 89 (Rated for Div. 2)D. Two Divisors 线性筛质因子
题目链接:D:Two Divisors 题意: 给你n个数,对于每一个数vi,你需要找出来它的两个因子d1,d2.这两个因子要保证gcd(d1+d2,vi)==1.输出的时候输出两行,第一行输出每一个 ...
随机推荐
- Vue3学习(六)之使用Vue3进行数据绑定及显示列表数据
一.写在前面 说来还是比较惭愧的,从周二开始事就比较多,周三还电脑坏了,然后修电脑等等一些杂事,忙的团团转,因为周二.周三自己走的过多了,导致不敢直腰,周四卧床一天. 之前都听说<陈情令> ...
- 【c++ Prime 学习笔记】第9章 顺序容器
一个容器是特定类型对象的集合 顺序容器中元素的顺序与其加入容器的位置对应 关联容器中元素的顺序由其关联的关键字决定,关联容器分为有序关联容器和无序关联容器 所有容器类共享公有接口,不同容器按不同方式扩 ...
- QG-2019-AAAI-Improving Neural Question Generation using Answer Separation
Improving Neural Question Generation using Answer Separation 本篇是2019年发表在AAAI上的一篇文章.该文章在基础的seq2seq模型的 ...
- 按照工业标准1英寸=25.4mm,而在电子元件成像领域Sensor尺寸1英寸=16mm。
按照工业标准1英寸=25.4mm,而在电子元件成像领域Sensor尺寸1英寸=16mm. 我们平常所说的CCD/CMOS的尺寸,实际上是指Sensor对角线的长度,这一点跟我们平常所说的屏幕尺寸是一样 ...
- 洛谷 P5665 [CSP-S2019] 划分
链接: P5665 题意: 给出 \(n\) 个整数 \(a_i\) ,你需要找到一些分界点 \(1 \leq k_1 \lt k_2 \lt \cdots \lt k_p \lt n\),使得 \( ...
- 【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
编写Java Spring Boot应用,通过配置logging.path路径把日志输出在指定的文件夹中. 第一步:通过VS Code创建一个空的Spring Boot项目 第二步:在applicat ...
- distinct-subsequences leetcode C++
Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...
- 『动善时』JMeter基础 — 57、Linux系统中运行JMeter脚本
目录 1.Linux系统中安装Java环境 (1)解压Java安装包 (2)配置Java环境变量 (3)验证Java环境是否配置成功 2.Linux系统中安装JMeter (1)下载JMeter (2 ...
- 西邮Linux兴趣小组第一次技术分享会
2016年10月30日晚,西邮Linux兴趣小组技术分享会在西安邮电大学长安校区东区逸夫教学楼FF305室成功举办.200多名来自全校不同专业的15,16级同学参加了此次分享会. 分享会于20:00正 ...
- 【接口】HttpClient 处理get和post请求(二)(2019-07-14 18:41)
一.环境准备 1.导入httpClient依赖包 <dependency> <groupId>org.apache.httpcomponents</groupId> ...