昨晚简单 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. Relocations in generic ELF (EM: 40)

    最近在搞机器上的wifi热点,需要移植一大堆东西,如hostapd\wpa_suppliant.dhcp等,这些玩意又依赖其他的一大堆库的移植,比如libnl,openssl等,今天在移植编译libn ...

  2. u-boot 1.1.6 start.S 代码学习<转>

    ---转自 http://blog.csdn.net/rockhard/article/details/4166642 ------ /* 参考了别人的一些笔记,看完了启动代码. 本文档记录在看代码时 ...

  3. 使用google zxing生成二维码图片

    生成二维码工具类: 1 import java.awt.geom.AffineTransform; 2 import java.awt.image.AffineTransformOp; 3 impor ...

  4. (一)FastDFS 高可用集群架构学习---简介

    1.什么是FastDFS FastDFS 是余庆老师用c语言编写的一筐开源的分布式文件系统,充分考虑了冗余备份,负载均衡,线性扩容等机制,并注重高可用.高性能等指标,使用FastDFS可以很容易搭建一 ...

  5. 双链路接入(双出口)isp运营商(负载分担)

    USG作为校园或大型企业出口网关可以实现内网用户通过两个运营商访问Internet,并保护内网不受网络攻击. 组网需求 某学校网络通过USG连接到Internet,校内组网情况如下: 校内用户主要分布 ...

  6. springboot单元测试 JUnit5

    JUnit5简介 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 JUnit 5官方文档 作为最新版本的JUnit框架,JUnit5与之前版本的JUnit框架有很 ...

  7. js 事件流和事件冒泡阻止

    js 事件流和事件冒泡阻止 事件流 当浏览器发展到第四代的时候(IE4与Netscape4)浏览器开发团队遇到一个有意思的的问题: 页面的哪一部分会拥有某个特定的事件? 比如在纸上画上一组同心圆,如果 ...

  8. MAC安装vue.js

    一.下载node node下载地址:https://nodejs.org/en/download/ 下载后点击安装即可. node -v 检查安装是否成功 二.安装 淘宝镜像 (npm) npm in ...

  9. vue项目部署到docker中

    通过nginx镜像部署 vue项目npm run build打包成dist目录,有的打包会加上版本号 启动 docker 将dist目录通过xftp拷贝到linux服务器上,同目录下新建Dockerf ...

  10. C++ substr 的两个用法

    substr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度.   basic_string substr(size_type _Off = 0,size_type _C ...