CF div2 994 (A~E)
VP赛时三题,自我感觉发挥不错,唯一不满意的地方在于D题完全没有思路。
A
答案最多为2,因为最坏情况即为先将整个区间合并为一个数,若这个数不是0,则再将这个数变为0。
所以3种情况分类讨论即可:
- 全是0,则不需要操作 -> \(0\)
- 只有一段非\(0\)连续区间 -> \(1\)
- 不止\(1\)个非\(0\)连续区间 -> \(2\)
B
首先,若只出现了一种字符,则一定可行,因为若只出现\(p\),则可令序列为\([1,2,...,n]\);若只出现\(s\)则可令序列为\([n,n-1,...,1]\)。
否则,两种字符一定都有。考虑任意一对\(p,s\):
设形成的前缀\((p)\)为\(1到k1\)的排列,后缀\((s)\)为\(1到k2\)的排列
易得前缀和后缀必然相互包含
所以检查是否有一对不相互包含的前后缀即可,实现不再赘述。
C
构造题
此题赛时的做法分讨得比较麻烦,但好在保证了正确性,还是官方题解的做法比较简洁。但感觉此题复盘的意义不大,故不再赘述。
D
\(dp\)
若没有对每一行循环左移操作,则就是一个普通的走迷宫\(dp\)。
由于每一行最多只会移动\(m - 1\)次,而\(n,m <= 200\),所以可以猜测是一个状态表示为\([行数][列数][对应行的移动次数]\)的\(dp\)。
状态表示:
\(g[i][j][k] :\) 从\((1,1)\)走到\((i,j)\),且第\(i\)行循环移动了\(k\)次,最小花费。
\(f[i][j] :\) 从\((1,1)\)走到\((i,j)\),最小花费。
考虑状态转移(此题重点):
由于每次只会向右或向下移动一格,所以\((i,j)\)的状态只会从\((i-1,j)\)和\((i,j-1)\)转移过来。
但由于引入了可对行循环左移的操作,使得这两种转移的方式并不一样:
1.\((i,j-1)\) -> \((i,j)\) : 由于题目明确要求必须在开始移动之前才能做循环左移操作,故对于行内的转移来说,必须要从当前行移动次数相同的状态转移过来。即:
g[i][j][k] <- g[i][j-1][k] + a[i][j`]
其中\(a[i][j`]\)表示第\(i\)行向左移动了\(k\)次后\((i,j)\)位置的数字
2.\((i-1,j)\) -> \((i,j)\) : 由于只能对行操作,因此行与行之间的转移其实是独立的。即从一行向下移动到另一行时,状态转移与当前行的循环移动次数是无关的。因此:
g[i][j][k] <- f[i-1][j] + k * w + a[i][j`]
而\(f\)的转移即为:
f[i][j] = min(g[i][j][0到m-1])
E
交互 + 二分,个人感觉非常不错的一道题。
首先要想明白一点:由于\(1\)的位置不确定,所以每一次询问的真假性也是不确定的。所以要想办法破掉这个牢笼,让每一次询问的真假性得以确定,从而获得有用信息。
假设这段区间中没有1,即为全\(0\)区间,则我们可以知道,0一定是真的回答,1一定是假的回答,因为所有区间的和均为0。这样区间长度与回答之间就具有了二段性:越长的区间回答越容易假,越短的区间回答越容易真。通过二分,就可以在\(O(logn)\)时间内确定出\(k\)。
所以可以考虑:确定出来\(1\)在哪个子区间内,这样其余的区间就全0了。可以利用上述方法确定\(k\)的值。
具体地,可以确定出\(1\)是在整个序列的前一半还是后一半:即为官方题解的做法,通过询问\(2\)次\(1/4\)长度区间方法确定出了\(1\)的分布,自己确实想不到qwq...
同样,对含有\(1\)的那一半区间再询问\(1\)次,即可以确定出\(k\)与\(n/2\)的大小关系。
这样,就将区间分为了两半:一半全\(0\),一半含有一个\(1\)。
此时又分为两种情况:
- \(k<=n/2\):直接对长度为\(n/2\)的全0区间二分,原理和上面说的一样。
- \(k>n/2\): 由于全\(0\)区间长只有\(n/2\),故只用全\(0\)区间时只能对\(k<=n/2\)的情况进行判断。那么\(k>n/2\)时怎么办呢?有个巧妙的办法:将另一半含1区间和该全0区间的子区间结合,这样构造的区间和一定为\(1\),并且区间长度范围是\([n/2+1,n]\)。这样就转化为了和上述一模一样的做法,同样具有二段性,二分即可。
CF div2 994 (A~E)的更多相关文章
- cf div2 234 D
D. Dima and Bacteria time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- 离线dfs CF div2 707 D
http://codeforces.com/contest/707/problem/D 先说一下离线和在线:在线的意思就是每一个询问单独处理复杂度O(多少多少),离线是指将所有的可能的询问先一次都处理 ...
- cf div2 239 D
D. Long Path time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- cf div2 236 D
D. Upgrading Array time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- cf div2 237 D
D. Minesweeper 1D time limit per test 2 seconds memory limit per test 512 megabytes input standard i ...
- cf div2 238 D
D. Toy Sum time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- cf div2 238 c
C. Unusual Product time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- cf div2 235 D
D. Roman and Numbers time limit per test 4 seconds memory limit per test 512 megabytes input standar ...
- cf div2 234 E
E. Inna and Binary Logic time limit per test 3 seconds memory limit per test 256 megabytes input sta ...
- CF div2 D BFS
http://codeforces.com/contest/676/problem/D 题目大意: 勇者去迷宫杀恶龙.迷宫是有n*m的方格子组成的.迷宫上有各种记号,这些记号表达着能走的方向.当且仅当 ...
随机推荐
- python调用imgkit将html转图片pdf问题实例wkhtmltox
wkhtmltox的下载地址:https://wkhtmltopdf.org/downloads.html 或者:https://github.com/wkhtmltopdf/wkhtmltopdf ...
- 如何在离线的Linux服务器上部署 Ollama,并使用 Ollama 管理运行 Qwen 大模型
手动安装 Ollama 根据Linux的版本下载对应版本的 Ollama, 查看Linux CPU型号,使用下面的命令 #查看Linux版本号 cat /proc/version #查看cpu架构 l ...
- 国内计算机领域相关的SCI和EI期刊,以及好中的SCI和EI期刊(不限国内外)
好中的: SCI刊: EI刊: EI会议: 参考: CCF发布计算领域高质量科技期刊分级目录 国内的: SCI-Expanded 1. <Journal of Computer Scie ...
- 基于pikachu靶场的水平越权详解
1. pikachu靶场搭建 如果你在之前已经使用过phpstudy了,参考pikachu 靶场环境搭建 如果在靶场搭建中遇到一些问题,参考皮卡丘靶场搭建遇到的问题大全 2. 水平越权简介 水平越权是 ...
- Ubuntu使用dpkg查看与修改architecture的用法
dpkg是Debian的包管理器,因为Ubuntu是Debian的变体,在Ubuntu下也有这个工具. 两个常用的命令是: dpkg -i package-file和dpkg -r package 分 ...
- 服务器漏洞修复:TLS 1.0 已启用、HSTS、CSP
1.TLS 1.0 已启用 描述: 此 Web 服务器支持通过 TLS 1.0 加密.TLS 1.0 不被认为是"强密码术".根据 PCI 数据安全标准 3.2(.1) 的定义和要 ...
- vue $forceUpdate()强制刷新
改变列表的值 一直不渲染 <van-pull-refresh v-model="refreshing" @refresh="onRefresh"> ...
- VLC web(http)控制 (3) 播放控制
VLC web(http) 播放控制: 1.如果已经在打开视频 播放和暂停都是:http://127.0.0.1:8080/requests/status.xml?command=pl_pause ...
- CVE-2023-32233 在 Google KCTF 中的漏洞利用方案分析
这是对前文的补充,增加一种漏洞利用方案的分析,前文地址: https://www.cnblogs.com/hac425/p/17967844/cve202332233-vulnerability-an ...
- HttpClient初步理解
昨天做完网站项目,就立刻接到了接口的项目,遇到了httpclient,因为毕业不久,遇到这块所以特此留下理解 HttpClient介绍 概念: HTTP 协议可能是现在 Internet 上使用得最多 ...