CF1534(模拟赛记录)

news/2024/11/13 9:38:01/文章来源:https://www.cnblogs.com/FLY-lai/p/18400800

比赛页面

ABCD 都打的可以,然而 E 的 +10 直接葬送了大概率过的 F1 ……

先猜了个 \(n-k+1\) 的结论,但是没有写搜索查正确性(事实上确实不正确),于是两次罚时,第一次是交互格式错了。
然后又猜了个 \(\min(n-k+1,(n-1)/(k-1))\) 的结论,过了几个小的搜索数据(\(n\le 6\))的,大一点的没跑,于是又两次罚时。
五分钟后发现 7 3 都跑不过去,立刻全部删掉重新想。想出来的解法是对的,但依然吃了五发罚时。
\(n-k+1\) 的时候写了个搜索做对拍,因为玩的小样例次数都 \(\le n-k+1\),搜索设定了只会搜出来次数 \(\le n-k+1\) 的解,导致把 4 3 这种虽然两次不行,但是四次可以的情况判定为无解,再加上 5 2 这种确实是无解的,误以为 \(n,k\) 奇偶性不同就无解。
这个错误的判无解方式沿用到我的正确解法里面,吃了五发罚时才发现这个问题 ……

警示:猜结论最好能证明出来。猜结论至少跑个中等强度的数据。猜的结论测出错时,要立刻把所有基于这个结论的东西都视作未证明的东西,包括搜索。

下面记录一下 E 的正确解法。

题目转化为 \(n\) 个杯子,每次翻 \(k\) 个,要求全部翻面,最少几次。

考虑每个杯子被翻的次数 \(c_i\),有:\(2\not\mid c_i\)\(\sum c_i=k\cdot times\),这是比较显然的。

因为每个杯子的地位是相同的,考虑构造一个 \(\{c_i\}\),记 \(sum=\sum c_i\),目标是让这个 \(c_i\) 满足上面两个条件的同时,让能达成 \(c\) 的操作次数最小。

对于一个序列 \(c\),显然要至少 \(\max c_i\) 次操作才可行(因为不能一次操作重复翻杯子)。因为 \(\dfrac{sum}{k}\) 是操作次数,所以必须有 \(\max c_i\le \dfrac{sum}{k}\) 才有可能可行。赛时直接数学直觉,猜这个也是充分条件过了。

如果这个结论成立,目标就是构造一个 \(c\) 满足:\(2\not\mid c_i\)\(k\mid\sum c_i\)\(\max c_i\le \dfrac{\sum c_i}{k}\) 这些条件,然后使 \(\sum c_i\) 最小。

初始设定 \(c_i=1\),因为必须是奇数,所以改变 \(c_i\) 只能 \(+2\)。因为要让最大值小于平均数,肯定是尽量平均的 \(+2\),如此循环直到 \(k\mid \sum c_i\)

于是得到算法:令 \(p=1\),每次令 \(c_p+2\),然后 \(p\leftarrow p+1\)\(p=n\)\(p\leftarrow 1\)),直到 \(k\mid sum\),找到最优的 \(c\) 数组。判无解可以在这个过程中做:当 \(sum/k>500\) 则无解。

然后是怎么通过 \(c\) 还原操作:每次取 \(c\) 最大的 \(k\) 个位置,然后全部 \(-1\) 即可。

最后一个问题:为什么一个 \(c\) 数组在满足 \(2\not\mid c_i\)\(k\mid \sum c_i\)\(\max c_i\le \dfrac{sum}{k}\) 就能构造出合法序列?

按照 \(\max c_i\) 的大小归纳。

\(\max c_i=1\),显然。

\(\max c_i>1\),记 \(mx=\max c_i\),因为 \(mx\le sum/k\),所以 \(sum\ge k\cdot mx\ge 3k>2k\);同时 \(n=\sum \dfrac{c_i}{c_i}\ge \sum \dfrac{c_i}{mx}=\dfrac{sum}{mx}\ge k\)。所以一定可以进行两次操作都包含 \(mx\)。于是 \(mx\rightarrow mx-2\),由归纳假设知可行。


官方题解:我们只关心当前奇数次的杯子个数,建立 \(0\sim n\),第 \(i\) 个点表示当前有 \(i\) 个奇数,求 \(0\rightarrow n\) 的最短路即可。

另外 F 是个没有技术含量的缩点。

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

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

相关文章

简单比较 http https http2,我们要如何把http升级为https

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣http 超文本传输​​协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。 HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求…

作业二:个人项目

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)Planning 计划 10Estimate 估计这个任务需要多少时间 300Development 开发 150Analysis 需求分析 (包括学习新技术) 50Design Spec 生成设计文档 10Design Review 设计复审 20Coding Standard 代码规…

冯.诺依曼 体系结构

冯.诺依曼 体系结构 alloverzyt 转载自:https://www.cnblogs.com/quan0311/p/15025116.html 1964年,第一台计算机ENIAC诞生,人类进入计算机时代,后来,美籍匈牙利数学家:冯.诺依曼提出了计算机“存储程序”的计算机设计理念,即将计算机指令进行编码后存储在计算机的存储器…

剑网 3 单机版安装教程 + 虚拟机一键端

今天给大家带来一款单机游戏的架设:剑网 3。本人为了学习和研究软件内含的设计思想和原理,带了单机架设教程,不适用于联网,仅供娱乐。 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了。 如果你是小白也没问题,跟着教程走也是可以搭建成功的,但是…

Redis使用场景

Redis使用场景 目录缓存缓存穿透 缓存击穿 缓存雪崩 双写一致性 持久化 数据过期策略 数据淘汰策略分布式锁实现原理(setnx、redission)其他哨兵模式、集群脑裂 分片集群、数据读取规则 redis是单线程的却很快缓存 一、缓存穿透 定义:查询一个不存在的数据,Mysql查询不到数…

flutter 的一些概念三

介绍一些Fluter面试中可能会遇到的一些非项目相关的概率名词,像stream与future的关系,platformView是什么本文同步发布于公众号:stringwu的互联网杂谈:flutter 的一些概念三 1 Stream 与 Future的关系 Stream 和 Future 都是 Flutter 中常用的异步编程模型,Future 适用于一次…

使用css和html初步搭建页面

由于很多html标签在博客中会生效,所以我有时候会简写 1.html分为头部head和body.头部中定义标题title2.设置标题使用h1,共有六级为h1~h6.想要设置标题具体颜色要使用css,的style,有三种方式 (1)h1 color:(2)写一个外部css文件(3)使用设置.同时使用元素选择,ID选择,类选择可以单…

通义灵码助力高校开学第一课,“包”你满意,新学期加油!

通义灵码作为国内领先的 AI 编码工具,近年来在高校中得到了广泛应用和推广。它不仅帮助大学生更高效地学习编程、提高代码质量,还激发了他们的创新思维,并为未来的职业生涯做好了准备。通义灵码作为国内领先的 AI 编码工具,近年来在高校中得到了广泛应用和推广。它不仅帮助…

第十三讲:count()这么慢,我该怎么办?

第十三讲:count(*)这么慢,我该怎么办? 简概:count(*) 的实现方式 ​ 你首先要明确的是,在不同的 MySQL 引擎中,count() 有不同的实现方式。MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count() 的时候会直接返回这个数,效率很高; 而 InnoDB 引擎就麻烦了,它执…

C# Winform 打安装包

开发好一款Winform程序,往往都是直接拉Debug文件里的内容,直接运行。这样直接给客户,或者打个简易的压缩包。视觉上觉得很low,客户也觉得价不配位。因此这个5毛钱的特效还是要加上,毕竟几十万的项目款都付了。提升一下软件的B格,让客户觉得物有所值。 一、下载安装扩展程…

解压zip文件或者安装软件出现 无法成功完成操作 解决方案

近期, 有一些朋友反馈在解压zip压缩包, 或者在安装软件的过程中出现了下面的错误提示: "无法成功完成操作, 因为文件包含病毒或者潜在垃圾文件" "Operation did not complete successfully because the file contains a virus or potentially unwanted software…