CW 11.15 模拟赛记录

news/2024/11/15 11:34:10/文章来源:https://www.cnblogs.com/YzaCsp/p/18547637

看到说不按题目难度排序, 先读下题

初看

\(\rm{T1}\) 没什么思路

\(\rm{T2}\) 感觉像是 \(\rm{dp}\) , 可能能多骗点?

\(\rm{T3}\) 又是计数

\(\rm{T4}\) 没思路

感觉要寄, \(\rm{lhs}\) 多半又要 \(\rm{AK}\)

\(\rm{T2}\)

观察到这个类型的题比较熟, 先开 \(\rm{T2}\)

简化题意

给定一长为 \(n\) 的字符串 \(S\) , 由前 \(m\) 个小写字母构成, 现在要求将这个字符串变换成一个由至少连续 \(k\) 个相同字符构成的字符串组成的字符串( 下称为 合法字符串 ), 其中, 字符 \(a \to b\) 的花费为 \(W_{a, b}\)

显然的, \(W_{a, b}\) 的计算可以用 \(\rm{Floyd}\) 进行 \(O(m^3)\) 的计算

考虑状态转移方程的设计

\(dp_{i, p}\) 表示字符串到 \(i\) 结尾时, 当前的结尾字符为 \(p\) , 令其为合法字符串的最小花费

则有

  • 跟上之前的染色, 不需要考虑长度
  • 自己单独拉出来进行染色, 长度至少为 \(k\)

\[\left\{\begin{array}{lr}dp_{i, p} = \min\left[ dp_{i - 1, p} + \rm{Cost} ( { S_{i \sim i} \to p }), dp_{i, p} \right] \text{ }, \text{ } j < i \text{ }, & \\dp_{i, p} = \min\left[ dp_{j, q} + \rm{Cost} ( { S_{j + 1 \sim i} \to p } ) \right] \text{ }, \text{ } j \leq i - k \text{ }\end{array} \right. \]

时间复杂度 \(O(n m^2)\) , 需要预处理 \(\rm{Cost}\) , 前缀和做一下就可以了, 转移 \(O(1)\), 预处理 \(O(nm)\)

现在问题转化成了如何高效的找

\[\min\left[ dp_{j, q} + \rm{Cost} ( { S_{j + 1 \sim i} \to p } ) \right] \text{ }, \text{ } j \leq i - k \]

观察到 \(Cost\) 的可拆性

没观察到

最外层显然需要先枚举 \(p\) , 里面枚举 \(i, q\)

这个时候已经过去 \(50 \rm{min}\) 了, 完蛋, 希望别假

先不打代码去看看 \(\rm{T1}\) , 防止一会脑子糊了做不出, 代码什么的艹过去就行了

确实多练 \(\rm{dp}\) 是好的

\(\rm{T1}\)

观察到康凌睿说这题是个 \(\rm{dp}\) , 往这个方向想

\(\rm{lhs}\) 说他没思路? 多半又要 \(\rm{AK}\)

往好的方向想, 至少对于 \(30\%\) 的数据, 我们可以状态压缩艹过去, 对于 \(60\%\) 的数据, 我们可以剪枝艹过去, 剩下 \(40 \rm{pts}\) 大不了不要了

我是删除线仙人

\(1 \rm{h} 20 \rm{min}\) 之后就放掉这道题去做后面的了, 有时间再看

\(\rm{T3}\)

简化题意,

每次让 \(i\) 位置的人位移到 \(A_i\) , 求能够使 \(k\) 次口令后回到原位的 \(A\) 排列

这个题好像之前的一道题

手玩样例找下性质, 然而并没有

直接观察大样例, 包没有性质的啊

再次跳题, 多半也没时间回来想了

\(\rm{T4}\)

从好的角度来想, 这个题至少题意清楚

显然的, 我们可以 \(O(n^2)\) 的计算出两两飞船之间唯一一次可以跳跃的机会时间, 这是简单的

对于 \(n^2\) 个时刻 (必须是排好序的), 每一次都可以更新最优解

这个复杂度大概是 \(O(n^2 \log n)\) 的, 可能可以通过 \(50\%\) 的数据

代码

现在还有 \(1 \rm{h} 45 \rm{min}\) , 最高可以拿到 \(60 + 100 + 0 + 50 = 210 \rm{pts}\), 但是最低只有 \(30 + 0 + 0 + 0 = 30 \rm{pts}\) 就看算法正确性和接下来的安排了

\(\rm{T1}\)

先打最为暴力和保险的 \(\rm{T1}\)

#include <bits/stdc++.h>
#include <bits/stdc++.h>
const int MAXN = 1020;
#define InMap(a, b) a >= 1 && a <= n && b >= 1 && b <= nint n;
int W[MAXN][MAXN];class Subtask_AB_Class
{
private:int Now[MAXN][MAXN]; //0 A; 1 Bint Ans = 0;/*检查以 (x, y) 为右下角的 2 * 2 正方形的合法性*/bool Check(int x, int y){if (InMap(x - 1, y - 1)) {int CntA = 0, CntB = 0;for (int i = x - 1; i <= x; i++)for (int j = y - 1; j <= y; j++)CntA += int(Now[i][j] == 0), CntB += int(Now[i][j] == 1);if (CntA == CntB) return true;else return false;}else {return true;}return true;}int CalcAns(){int NowAns = 0;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (Now[i][j] == 0) NowAns += W[i][j];return NowAns;}void dfs(int x, int y){if (x == n && y == n) {if(Check(n, n))Ans = std::max(Ans, CalcAns());return;}if (!Check(x, y)) return;if (y != n) {Now[x][y + 1] = 0;dfs(x, y + 1);Now[x][y + 1] = 1;dfs(x, y + 1);}else {Now[x + 1][1] = 0;dfs(x + 1, 1);Now[x + 1][1] = 1;dfs(x + 1, 1);}}public:void solve(){dfs(1, 0);printf("%d", Ans);}
} Subtask_AB;int main()
{scanf("%d", &n);for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)scanf("%d", &W[i][j]);Subtask_AB.solve();return 0;
}

花了 \(25 \rm{min}\) 打, 一遍过并且惊人的快

\(\rm{T2}\)

这个题是正解, 但是实现稍微复杂, 尽可能快但是要保证正确

大不了放弃 \(\rm{T4}\)

神经, 写一半发现复杂度算错了, 极限优化

现在还剩下 \(40 \rm{min}\) 左右, 看看能不能拼出来这 \(100 \rm{pts}\)

大结局

最后死磕 \(\rm{T2}\) 转移和优化应该是对的, 没打出来, 遗憾趋势

预计 : $ 60 + 0 + 0 + 0 = 60 \rm{pts}$

实际 :

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833938.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go fiber: 抛出自定义异常

一,代码: 1,自定义错误类: package configimport ("fmt" ) //定义错误代码和错误信息 type MyError struct {Code intMsg string } //需要定义通用的Error()方法 func (e MyError) Error() string {return fmt.Sprintf("Code: %d,Msg: %s",e.Code…

移动端按住说话样式

下面是最终效果,手指移出指定区域就改为取消状态,松开手指就取消,手指没有移出指定区域,状态为录音中,松开手指为结束录音状态下面是代码<!DOCTYPE html> <html lang="zh"> <head><meta charset="UTF-8"><meta name="…

联想 进入bios u盘启动

先插入u盘,再选择选项 thinkpad e485 , f12快速选择启动选项 , f1 进入bios其他 联想进入bios设置u盘启动,网上的博客资料中有这样一句话: “7、在Startup栏目中,找到“UEFI/Legacy Boot”选项,设置为“Legacy Only”,并将“CSM Support”设置为“YES”,然后找到“…

Mybatis-plus之新特性,你都用过哪些?

1.lambda方式查询 在使用Mybatis-plus进行查询时,我们正常的操作是创建一个QueryWrapper,然后根据字段去做查询操作(如下图)那么就有一个问题,每个数据库的字段都需要写出来,遇到驼峰字段还需要转换为下划线形式,非常影响开发效率。而官方也考虑到这个问题,后续的版本已…

KingbaseES V8R3集群运维案例之---集群恢复案例

KingbaseES、Kingbasecluster案例说明: KingbaseES V8R3流复制集群在专用机环境下,出现异常问题,恢复过程如下: 问题现象及解决方案: 1、现象一 如下所示,整个集群无法启动,选择其中一个节点作为主节点,数据库服务启动如下所示:解决方案: 将sys_xlog下的xxxxA.histor…

Exchange 2016部署实施案例篇-04.Ex基础配置篇(下)

上二篇我们对全新部署完成的Exchange Server做了基础的一些配置,今天继续基础配置这个话题。 DAG配置 先决条件首先在配置DGA之前我们需要确保DAG成员服务器上磁盘的盘符都是一样的,大小建议最好也相同。 其次我们需要确保有一块网卡用于数据复制使用(PS:单块网卡也可以,单…

YOLO系列技术细节(更新中)

相对于R-CNN、Fast RCNN的two-stage目标检测方式,即先在图像中提取候选框,再逐一对图像进行分类。候选框的生成可以是滑动窗口或选择性搜索,再对候选框进行非极大值抑制(一般只在推理时做非极大值抑制,训练时需要这些重复的框)。而YOLO则是one-stage的端到端形式:输入图…

Apple Logic Pro 11.1 - 专业音乐制作 (音频编辑)

Apple Logic Pro 11.1 - 专业音乐制作 (音频编辑)Apple Logic Pro 11.1 - 专业音乐制作 (音频编辑) Logic Pro 配备全新 AI 功能,引领音乐创作再上新阶 请访问原文链接:https://sysin.org/blog/apple-logic-pro/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org…

【Civit3D 2025下载与安装教程】

1、安装包 「Civil3d_2025」: 链接:https://pan.quark.cn/s/b05281a72f24 提取码:PUWx 「Civil3D2020」: 链接:https://pan.quark.cn/s/61c01d7bd533 提取码:RbML 2、安装教程(建议关闭杀毒软件) 1) 双击Setup.exe安装,弹窗安装对话框2) 勾选‘我同意。。…

[Flask]SSTI 1

[Flask]SSTI 1 根据题目判断这是一道SSTI参数处理不当的漏洞,打开页面显示Hello guest,猜测参数名为user发现页面无任何变化,于是尝试name,成功回显尝试{{2*2}},页面显示4,存在SSTI注入构造payload,成功执行任意代码 # payload的解释:获取eval函数并执行任意代码?name=…