当前位置: 首页 > 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.gsyq.cn/news/21213.html

相关文章:

  • ADC-过零检测详解
  • 内网穿透进阶:让 frpc 只代理「真正在线」的端口
  • 规则逻辑与人文逻辑的统一:AI元人文构想的演进之路
  • 二叉树中和为目标值的路径
  • 云原生技术概览
  • OCI
  • SpringBoot定时任务不定时执行了
  • 时间格式不能正常转换?
  • 群发红包系统
  • PaddleOCR源码安装+centos7.6+python3.10
  • 10.14日学习笔记
  • 全局解释器锁(GIL)
  • How to Speak English with Only 50 Sentences
  • ZR3365
  • 六维力传感器材质选择:影响性能与精度的关键因素 - 实践
  • vtk学习——Pipeline
  • 长沙四大名校x东方project
  • SpringBoot运维实用篇(YW-1.SpringBoot程序的打包与运行,YW-2.配置高级,YW-3.多环境开发,YW-4.日志) - a
  • 10.14 NOIP 模拟赛 T1. HappyLovelyEveryday!
  • 20251014 杂题
  • SQL在智能自动化业务场景中的应用 - Irving11
  • .net Core资料
  • 日志|二叉树|110平衡二叉树|111二叉树的最大深度|199二叉树的右视图
  • 吾の歌单
  • Qwen多模态系列模型笔记—Qwen2-VL
  • WPF 调用 ChangeWindowMessageFilterEx 修改指定窗口 (UIPI) 消息筛选器的用户界面特权隔离
  • 歌词本。 - Slayer
  • ai出题
  • 从 0 到 1 实现高性能日志库 MiniSpdlog — 这可能是最适合新手的日志系统实战项目 !
  • 思想惰性:警惕时代中的精神惯性