UVa(紫书)做题记录

news/2025/10/15 0:42:01/文章来源:https://www.cnblogs.com/mostlyhms/p/19142398

第八章:高效算法设计

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.mzph.cn/news/937188.shtml

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

相关文章

MyBatis 延迟加载使用及原理 - Higurashi

一、延迟加载是什么? 延迟加载(Lazy Loading)又称“惰性加载”,指的是:当查询一个对象时,不立即加载它的关联对象(如一对多、多对一关系),而是在第一次真正使用该关联对象时才去执行 SQL 查询加载它。举个例子…

ADC-过零检测详解

转载自:https://mbb.eet-china.com/tech/t1/177081.html1、反电动势波形的起源 下图展示了内转子磁极的磁感应强度B的分布情况。定义磁感应强度方向向外为正 在0的时候,处于正反方向交界处,磁感应强度为零; 然后开…

今日小雨

喜欢泥土的香气 傍晚的微风 夹杂着清新与沉闷之感 不必要的话不说 有些话没必要说 所做的目的懒得过问 回避过问 大觉一场

内网穿透进阶:让 frpc 只代理「真正在线」的端口

一条脚本搞定「端口探活 + 配置热更新 + 服务保活」,彻底告别手动重启与爆炸日志。一、痛点:静态配置的尴尬本地服务没启动,frpc 仍疯狂重试,日志秒级刷屏;新增/下线服务要手动改 TOML → 重启,极易遗忘;服务异…

规则逻辑与人文逻辑的统一:AI元人文构想的演进之路

规则逻辑与人文逻辑的统一:AI元人文构想的演进之路 在人工智能发展的关键转折点,我们面临着深刻的认知跃迁:规则逻辑与人文逻辑并非对立的两极,而是智能进化道路上相互依存、彼此成就的必然维度。AI元人文构想以其…

2023 ICPC Jinan

2023 ICPC Jinan ICPC Jinan G 考虑找矛盾。首先对于同一行,翻转和不翻是一个矛盾,对于相异的行,若一行的翻转或不反转会使同一列产生多余的 1,则又是一个矛盾。将每一行拆成两个点,一个点代表不翻转该行,一个点…

二叉树中和为目标值的路径

LCR 153. 二叉树中和为目标值的路径 LCR 153. 二叉树中和为目标值的路径参考题解前言 该题考察二叉树中的回溯,使用先序遍历以及路径记录 先序遍历:根左右 路径记录:通过一个“中间人”(path)来记录当前的路径和,…

动态库的调用方式

在 Linux 中,动态库(.so文件)的调用方式主要有两种:编译时链接(隐式调用)和运行时加载(显式调用)。 一、编译时链接(隐式调用) 这种方式在编译阶段就指定动态库,程序启动时会自动加载依赖的动态库,适用于已…

动态库的调用方式

在 Linux 中,动态库(.so文件)的调用方式主要有两种:编译时链接(隐式调用)和运行时加载(显式调用)。 一、编译时链接(隐式调用) 这种方式在编译阶段就指定动态库,程序启动时会自动加载依赖的动态库,适用于已…

云原生技术概览

云原生技术概览书籍:https://jimmysong.io/kubernetes-handbook/从云计算到微服务再到云原生计算 下面将从云计算的发展历程引入云原生计算 云计算介绍 云计算演进历程云计算就是一种配置资源的方式,根据资源配置方式…

OAM角色定义

OAM角色定义https://github.com/oam-dev/spec/blob/master/introduction.md关注点分离 开放应用程序模型提出了开发人员负责的部分与平台工程师负责的部分之间明确的关注点分离。 Open Application Model proposed a c…

OCI

OCI【译者的话】本文介绍了OCI运行时和镜像规范,以及在过去的一段时间里大家对该规范的一些误解。OCI规范制订工作尚未落幕,未来也将对容器产生更加深远的影响。 【3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站】…

消灭重复代码的最佳实践

消灭重复代码的最佳实践代码重复本身不可怕,可怕的是漏改或改错。消灭重复代码,降低改动可能引入的风险。学习笔记:https://time.geekbang.org/column/article/228964工厂模式 + 模板方法 消除 if else 和重复代码 …

Spring应用上下文的获取和保存Bean

Spring应用上下文的获取和保存BeanSpring 容器是 IOC 容器,但是,反过来却不成立不常用的容器实现 -- BeanFactory:最简单的容器,提供基本的 DI 功能 高级实现,继承 BeanFactory 派生的应用上下文 -- ApplicationC…

Redis的数据类型选择

Redis的数据类型选择String 几乎所有的数据都可以使用 String 来存储。浪费存储空间,key 也是需要存储空间的 管理、维护成为噩梦,Redis 中存在着大量的 KV 对象 key 冲突的几率变高(不同的业务系统共用一个 Redis …

pipeline解决Redis频繁命令往返导致的性能瓶颈

pipeline解决Redis频繁命令往返导致的性能瓶颈客户端和服务端交互模型Redis 的 pipeline 交互模型Redis pipeline 与原生批量mset等等命令对比原生批量命令是原子性,pipeline 是非原子性的 原生批量命令一次只能执行一…

SpringBean实例化之前做点事情

SpringBean实例化之前做点事情SpringBean 实例化 需求,实现一个视频解码器,可以实现各种视频格式的解码 第一种方法:先去实现各个解码器,然后 if.else 判断使用哪种解码器使用 BeanPostProcessor 优化 第二种方法:…

SpringBoot定时任务不定时执行了

SpringBoot定时任务不定时执行了两个注解 @EnableScheduling:使得@Scheduled生效 @Scheduled:标注在方法上 @Scheduled 注解 fixedDelay任务结束与开始之间的间隔 fixedRate两次任务的开始的间隔,不管任务是不是执行…

依赖冲突的发现和解决

依赖冲突的发现和解决依赖冲突的发现现象一:一个类的行为不按照预期,本来这个类应该是有这个方法的,但是引入一个新的依赖之后就开始报错找不到方法了,一般就是依赖冲突的时候 Maven 自己选择了一个不符合自己预期…

javaLong类型在前端json数据损失精度

javaLong类型在前端json数据损失精度方法一:重新生成pojo对象,将所有数据库类型为bigint都映射成String类 方法二:对于使用springboot,则增加配置代码: package com.gj.app.config;import com.fasterxml.jackson.…