当前位置: 首页 > news >正文

UVa(紫书)做题记录

第八章:高效算法设计

UVA11093 Just Finish it up

最直接的办法:选取正收益的点开始,O(n) judge。但有个必须注意到的性质,即如果一个起点不合法,那么刚才扫过的所有点不不合法。于是时间复杂度就降下来了。

明明就很简单呀!为什么想不到呢。先确定一般暴力解、正解时间复杂度,然后再逐步想如何优化。想算法,想不到就回来找性质。

UVA12174 Shuffle

滑动窗口。思考:下一次Shuffle的起点有何性质?

  1. 除开头,之后的均是完整的s序列
  2. 开头没有重复数字
  3. 开头的长度确定,整体状态唯一

显然,由1、3,中间只要有一段不合法,对应的Shuffle起点不成立
于是想到,用滑动窗口记录每一次滑动时合不合法,再映射回“开头”的end用于记录(同时想到:最多只有s个答案)
那么剪掉不合法的就是正确答案。
那么怎么记录当前滑动窗口合不合法?
思考:什么时候不合法
答:有重复数字的时候
于是,仅需要记录有多少重复的数字
思考:怎么记录
思考:滑一次有什么影响?
答:有数进有数出,也就是可能出现新重复,也可能减去原有重复。
思考:我需要记录什么->我关心谁重复吗?
答:不关心
于是想到,直接用一个int cnt记录即可。

int cnt = 0;
for (int i = 1; i <= n+s; i++) {if (i > s) {--wnd[x[i-s]];if (wnd[x[i-s]] == 1) --cnt;}++wnd[x[i]];if (wnd[x[i]] > 1 && x[i]) ++cnt;if (cnt) ilg[i%s] = 1;
}`

这题必须好好反思。可以看出自己的思维混乱,没想清楚就开始打代码。man!你自己看看你一开始都打的啥呀!!!

http://www.hskmm.com/?act=detail&tid=31248

相关文章:

  • MyBatis 延迟加载使用及原理 - Higurashi
  • ADC-过零检测详解
  • 今日小雨
  • 内网穿透进阶:让 frpc 只代理「真正在线」的端口
  • 规则逻辑与人文逻辑的统一:AI元人文构想的演进之路
  • 2023 ICPC Jinan
  • 二叉树中和为目标值的路径
  • 动态库的调用方式
  • 校招面试官揭秘:我们到底在寻找什么样的技术人才?
  • day011
  • nginx
  • 打造一个比人类更懂 Python 的 AI 编程助手
  • 【黑马python】基础 5.Python 函数:参数 返回值 嵌套
  • linux 命令
  • 一试模拟试题(十七)problem 7 另(数竞相关)
  • PaddleOCR源码安装+centos7.6+python3.10
  • 以后尽量多更新
  • 10/14
  • 算法模版
  • newDay10
  • C#/.NET/.NET Core技术前沿周刊 | 第 57 期(2025年10.1-10.12)
  • Cheap Context and Expensive Context
  • [Mysql]快速执行sql文件
  • Agent之殇
  • 元类编程
  • 1014
  • 10.14日学习笔记
  • python 函数参数的形式以及调用方式
  • SpringBoot开发实用篇(热部署 - 配置高级 - 测试 - 数据层解决方案 ) - a
  • 深入探索Next.js中的SSRF漏洞挖掘