CF2085D Serval and Kaitenzushi Buffet

news/2025/11/6 22:36:44/文章来源:https://www.cnblogs.com/StarLink/p/19197917

题目链接

比较 mini 的模拟赛考到了,想了半小时 DP 终于在结束前 5min 成功想出正解但是并没有写完

解题思路

首先我们考虑什么时候可以拿取寿司。容易发现因为我们必须在 \(n\) 分钟结束时吃完所有拿取的寿司,那么最后 \(k\) 个寿司不能拿取;同时如果到目前的时间减去拿寿司所用时间小于等手里寿司的数量,此时也是不能拿取的。

然后我们发现如果我们直接用上面的条件进行正向枚举并判断是错误的,因为虽然总时间是够的,但是不能保证每个寿司在拿取后有充足的时间吃掉它。我们修改一下条件:拿取该寿司后的剩余时间减去拿取寿司的时间大于等于吃掉所有寿司的时间时可以拿取寿司。这样就很明显需要我们倒序枚举。

由于题目要求我们的美味值最大,我们在符合条件的范围内优先拿取寿司,当发现时间不够了就对比一下之前拿取的最小的美味度和现在的谁更大,我们丢掉更小的那个。这很显然就是反悔贪心啦。

整合一下思路。倒序枚举寿司盘 \(i(1 \leq i \le n - k)\),记录拿取次数 \(cnt\),开一个小根堆维护已经拿取的寿司,我们先拿取寿司,当 \((n - i + 1) - cnt \lt cnt \times k\) 时说明时间超限,此时我们对比堆顶和当前美味值,留下美味值更高的那个,统计答案即可。

关于一个实现细节

注意到在我贴的代码中并没有判断队列是否为空,因为此时有 \(cnt = 0\),所以肯定会被判断为时间充裕从而直接拿取寿司。换言之,当上面的判断成立时肯定有 \(cnt\) 不为 \(0\),那么队列也不为空,就不需要判断了。

代码

#include <bits/stdc++.h>
#define int long long
using namespace std;const int MN = 2e5 + 3;
int n, k, ans;
int d[MN];priority_queue<int, vector<int>, greater<int> > q;inline void fir() {while (!q.empty()) q.pop();ans = 0;
}
void solve() {cin >> n >> k;fir();for (int i = 1; i <= n; i++) cin >> d[i];int tmp = 0; // 拿取次数for (int i = n; i >= 1; i--) {if (i > n - k) continue;tmp++; // 先拿上if ((n - i + 1) - tmp < tmp * k) {int x = q.top();if (x < d[i]) {q.pop();q.push(d[i]);ans += d[i] - x;}tmp--; // 扔掉原来那个}else {q.push(d[i]);ans += d[i];}}cout << ans << "\n";
}signed main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int T;cin >> T;while (T--) solve();return 0;
}

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

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

相关文章

STM32时钟学习11.6

STM32时钟树,APB1是低速,APB2是高速,锁相环做乘法,分频器做除法,复用器做选择,开启外设时钟时注意外设在哪个时钟线上。自动重装载寄存器,上计数,从0计数到ARR+1后会自动回到0继续计数,重复RCR+1次后产生事件…

2025.11.6总结

今天继续软考的学习。 通过软考模拟系统熟悉考试流程,上午题2h,下午题2h。上午题最早90min后交卷。多的30min可加入下午题的做题时间。 模拟系统的题做了做,发现做上午题的时候做的很快,会的,很快选出来了,不会的…

高级程序语言设计的四次作业

一.运行程序 1.2.二. 1.求pi2.逻辑表达式中的运算符,只有会影响表达式求值时,才会执行3.用for循环输出六行,第一行有FEDCBA,第二行是FEDCB,第三行是FEDC....,以此类推4.编程输入n, 计算s=1+(1+2)+(1+2+3)+…+(1+…

11月6日

今天系统学习了Java的异常处理机制。核心在于理解try-catch-finally这个强大的语法结构。我认识到,程序中的错误并非不可控,通过主动捕获(catch)Exception及其子类,可以优雅地处理运行时问题,保证程序的健壮性,避…

2024 暑期模拟赛 #11

90 + 100 + 52 + 30 = 272, Rank 1/6.下次一定要认真认真认真算算动态空间了 /ll 第一次知道 set 不能指针相减 /jk链接:link 题解:link 的题解部分 时间:3h20min (2025.11.06 18:40~22:00) 题目数:4 难度:A B C …

startctf环境变量注入及强网拟态smallcode特殊解法

之前打强网拟态遇到了环境变量注入的题,看其他师傅都是用自己的VPS作为代理服务器。 这里我想给出一个自己的打法,可以在靶机不出网的条件下写入webshell 下面是题目源码 <?phphighlight_file(__FILE__);if(isse…

Spring ApplicationEventPublisher 事件发布

ApplicationEventPublisher ApplicationEventPublisher是一个事件发布器,我们可以通过ApplicationContext来发布一个相应的事件 主要涉及到 事件定义、事件发布、事件订阅 三个模块 demo 事件 需要继承org.springfram…

NOIP模拟赛20251106 T4 CF1270H

题目大意: 定义一个序列 \(a\) 的 \(f(a)\) 表示,将所有 \(i < j, a_{i} < a_{j}\) 连边后的连通块数量。 单点修,每次查询全局的 \(f\) 值。 解题思路: 不知道为啥,我感觉这个题像 CF2147F。 考虑每个连通…

详细介绍:电阻的分类与应用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

题解:CF2121E Sponsor of Your Problems

不知何时的模拟赛收录了此题嗯对发现自己的专栏里有,遂搬运。 题目简述 定义 \(f(a, b)\) 表示这两个数的十进制下数字相同的位数,如 \(f(21,12) = 0\),\(f(54321, 24361) = 3\)。 给两个位数相同的十进制数 \(l\) …

wepoc Nuclei 漏洞扫描器图形界面工具

一款图形化的nuclei POC 管理工具🛡️ wepoc Nuclei 漏洞扫描器图形界面工具🚀 基于 Wails v2 框架的 Nuclei 漏洞扫描器图形界面工具 专为安全研究人员和渗透测试工程师设计 Github: https://github.com/cyber0s/…

Python实现数据可视化用Matplotlib轻松创建专业级图表 - 指南

Python实现数据可视化用Matplotlib轻松创建专业级图表 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

Python因果分析选哪个?六个贝叶斯推断库实测对比(含代码示例)

Python 生态里能用的因果库有很多选哪个往往要看你对模型的理解程度,以及项目对“可解释性”的要求。这篇文章将对比了六个目前社区中最常用的因果推断库:Bnlearn、Pgmpy、CausalNex、DoWhy、PyAgrum 和 CausalImpac…

题解:CF2121B Above the Clouds

不知何时的模拟赛收录了此题不知道是什么时候的事了反正看到了粘一下算了。 思路 首先我们注意到只要 \(b\) 是 \(a + c\) 的子串即可,不需要考虑长度,那么我们可以只考虑 \(b\) 的长度为 1 情况。 可以将每个字符出…

实用指南:学习日报 20251007|深度解析:基于 Guava LoadingCache 的优惠券模板缓存设计与实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

选择 Tita 新绩效一体化的 5 大理由

在企业绩效管理从 “单一考核” 向 “价值驱动” 转型的当下,Tita 新绩效一体化解决方案凭借对绩效管理全链路的深度重构,以五大核心优势助力企业打破绩效孤岛,实现管理效能与组织活力的双重提升。 1. 战略与绩效深…

csv的pandas包处理基础操作整理,以处理气象站点数据为例

处理csv文件,同样将结果保存为csv文件,只涉及数据不涉及Excel文件的格式,主要使用pandas包就足够了。以我自己的任务为主,串一串基础语句进行总结。 1、读取csv文件 import pandas as pd import numpy as np impor…

NOIP模拟赛20251106 T3

题目大意: 有一个长度为 \(n\) 的序列,每次你会单点修改,求每次修改完了之后的 \(f\)。 \(f\) 表示最少操作几次冒泡,使得他不降。 \(n,q \le 5 \times 10^5\) 解题思路: 考虑刻画这个东西,由于每次对于一个非前…

Tomassi计算机

请分析计算机检材,找出嫌疑人计算机主要的登录用户(答案格式:Administrator) Tomasi请分析计算机检材,嫌疑人计算机操作系统的注册所有者是?(答案格式:Administrator) Windows 用户请分析计算机检材,嫌疑人计…

团队第一次作业

软件工程第一次实践作业软件工程实践 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering作业要求 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13573作业的目标 自主选题,选…