昨晚简单 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 题解的更多相关文章

  1. 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) ...

  2. 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$,依次给出 ...

  3. Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords(贪心/数学)

    题目链接:https://codeforces.com/contest/1366/problem/A 题意 有两个数 $a$ 和 $b$,每次可以选择从一个数中取 $2$,另一个数中取 $1$,问最多 ...

  4. Educational Codeforces Round 89 (Rated for Div. 2) C Palindromic Paths

    题目链接:Palindromic Paths 题意: 给你一个n行m列的矩阵,这个矩阵被0或者1所填充,你需要从点(1,1)走到点(n,m).这个时候会有很多路径,每一条路径对应一个01串,你可以改变 ...

  5. Educational Codeforces Round 19 题解【ABCDE】

    A. k-Factorization 题意:给你一个n,问你这个数能否分割成k个大于1的数的乘积. 题解:因为n的取值范围很小,所以感觉dfs应该不会有很多种可能-- #include<bits ...

  6. Educational Codeforces Round 55 题解

    题解 CF1082A [Vasya and Book] 史上最难A题,没有之一 从题意可以看出,翻到目标页只有三种办法 先从\(x\)到\(1\),再从\(1\)到\(y\) 先从\(x\)到\(n\ ...

  7. Codeforces Educational Codeforces Round 54 题解

    题目链接:https://codeforc.es/contest/1076 A. Minimizing the String 题意:给出一个字符串,最多删掉一个字母,输出操作后字典序最小的字符串. 题 ...

  8. Educational Codeforces Round 89 (Rated for Div. 2) A Shovels and Swords B、Shuffle

    题目链接:A.Shovels and Swords 题意: 你需要一个木棍和两个钻石可以造出来一把剑 你需要两个木棍和一个钻石可以造出来一把铁锹 你现在有a个木棍,b个钻石,问你最多可以造出来几件东西 ...

  9. Educational Codeforces Round 89 (Rated for Div. 2)D. Two Divisors 线性筛质因子

    题目链接:D:Two Divisors 题意: 给你n个数,对于每一个数vi,你需要找出来它的两个因子d1,d2.这两个因子要保证gcd(d1+d2,vi)==1.输出的时候输出两行,第一行输出每一个 ...

随机推荐

  1. MySQL:基础语法-2

    MySQL:基础语法-2 记录一下 MySQL 基础的一些语法,便于查询,该部分内容主要是参考:bilibili 上 黑马程序员 的课程而做的笔记,由于时间有点久了,课程地址忘记了 上文MySQL:基 ...

  2. 机器学习:SVM

    SVM 前言:支持向量机(Support Vector Machine, SVM),作为最富盛名的机器学习算法之一,其本身是一个二元分类算法,为了更好的了解SVM,首先需要一些前提知识,例如:梯度下降 ...

  3. 【二食堂】Beta - Scrum Meeting 1

    Scrum Meeting 1 例会时间:5.13 18:30~18:50 进度情况 组员 当前进度 今日任务 李健 1. 查阅资料,解决划词勾选和右键菜单的问题issue2. 修复了Alpha阶段的 ...

  4. BUAA-软件工程-个人总结与心得

    提问回顾以及个人总结 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 学习软件开发的过程,团队之间的写作 ...

  5. elasticsearch嵌套对象的映射

    在es中,我们有时候可能需要映射,{ "field" : "xx" , "field01" : [] }这样格式的嵌套对象,默认情况下es会 ...

  6. activemq实现队列的独有消费

    在我们实际的开发中可能存在这么一种情况,应用程序要向一个队列名为queue的队列中发送3条消息,需要保证这3条消息按顺序消费.必须是第一条消费完,在消费第二条然后是第三条.而我们的程序中可能有时候存在 ...

  7. js 原型链详解

    目录 构造函数和实例 属性Prototype 属性__proto__ 访问原型上的方法 构造函数也有__proto__ 构造函数的原型也有__proto__ Object.prototype这个原型对 ...

  8. Less-5闯关失败

    进行第五关的通关还是用之前的方式进行测试以及判断是什么类型的注入.通过判断我们不难发现是字符型注入.但是出了问题,我们会发现按照原来的步骤进行注入都会返回"You are in " ...

  9. 力扣 - 剑指 Offer 57 - II. 和为s的连续正数序列

    题目 剑指 Offer 57 - II. 和为s的连续正数序列 思路1(双指针/滑动窗口) 所谓滑动窗口,就是需要我们从一个序列中找到某些连续的子序列,我们可以使用两个for循环来遍历查找,但是未免效 ...

  10. vim vi 高亮第80列 Python PEP8规范 行最大长度设置

    命令模式下 :set cc=80 或者 打开 vim的配置 文件 .vimrc vim ~/.vimrc 接着你会看到你的配置文件 在配置文件中加上这样行配置代码 set cc=80 ok 现在退出v ...