2025/11/24~2025/11/28 做题笔记 - sb

news/2025/11/24 21:01:03/文章来源:https://www.cnblogs.com/SuperSupper/p/19265799

2025/11/24

Codeforces Round 1066 (Div. 1 + Div. 2)

A. Dungeon Equilibrium

比较简单,很明显要么全部清除要么削减到 \(a_i = i\),直接算即可

Code
#include <iostream>
#include <map>using namespace std;int T, n, ans;
map<int, int> mp;int main() {
#ifndef ONLINE_JUDGEfreopen("in", "r", stdin);freopen("out", "w", stdout);
#endifcin.tie(0)->sync_with_stdio(0);cin >> T;while (T--) {cin >> n;ans = 0, mp.clear();for (int i = 1, x; i <= n; i++)cin >> x, mp[x]++;for (int i = 0; i <= n; i++)ans += mp[i] >= i ? (mp[i] - i) : mp[i];cout << ans << '\n';}return 0;
}

B. Expansion Plan 2

统一处理那么多格子的变化并不好作,发现只有一条路径是有效的,那么原问题等价于可以选择一个方向走或者斜着走,能否走到 \((x, y)\)。那么很明显 \(4、8\) 的顺序不重要。同时 \(4\) 表示可以选择一个方向走一步,\(8\) 表示两个方向都走一步。那么直接看 \(\max(x - b, 0) + \max(0, y - b)\) 是否比 \(a\) 大即可,\(a\) 表示 \(4\) 的出现数量,\(b\) 表示 \(8\) 的出现次数

Code
#include <iostream>
#include <map>using namespace std;int T, n, x, y, a, b;
string s;int main() {
#ifndef ONLINE_JUDGEfreopen("in", "r", stdin);freopen("out", "w", stdout);
#endifcin.tie(0)->sync_with_stdio(0);cin >> T;while (T--) {cin >> n >> x >> y >> s, x = abs(x), y = abs(y);a = b = 0;for (auto i : s)a += i == '4', b += i == '8';x -= b, y -= b;cout << (max(x, 0) + max(y, 0) <= a ? "yes\n" : "no\n");}return 0;
}

C. Meximum Array 2

要注意到所有操作都只有统一的一个值 \(k\)。那么构造并不难

  1. \(i\) 只有 \(\min\) 限制。直接令 \(a_i = k\) 即可
  2. \(i\) 只有 \(mex\) 限制。直接从 \(0~k - 1\) 按顺序轮着放即可。如果有两个限制相交,合并起来在做
  3. \(i\) 两种限制都有。令 \(a_i = k + 1\)
Code
#include <iostream>using namespace std;const int kN = 101;int T, n, k, q, a[kN], tag[kN];int main() {
#ifndef ONLINE_JUDGEfreopen("in", "r", stdin);freopen("out", "w", stdout);
#endifcin.tie(0)->sync_with_stdio(0);cin >> T;while (T--) {cin >> n >> k >> q;fill(tag, tag + n + 1, 0);for (int i = 1, c, l, r; i <= q; i++) {cin >> c >> l >> r;for (; l <= r; l++)tag[l] |= c;}for (int i = 1, j = 0; i <= n; i++) {if (tag[i] == 1)a[i] = k;else if (tag[i] == 2)a[i] = j, j = (j + 1) % k;elsea[i] = k + 1;}for (int i = 1; i <= n; i++)cout << a[i] << ' ';cout << '\n';}return 0;
}

D. Billion Players Game

感觉比 E 要难一点

首先需要想到选择一定是成对出现的,并且贡献非负,所以最多舍弃 \(1\) 个点不选

\(Solution1\)

对我来说更自然的想法。直接枚举这个不选择的点,发现前缀一定是向后,后缀一定是向前。一开始假设所有点都向前,往后扫的同时算出把这个点改成向后后的答案即可。因为是两个端点选最差的,那么同时维护在两个端点的取值

Code
#include <algorithm>
#include <iostream>using namespace std;
using ll = long long;const int kN = 2e5 + 1;int T, n, L, R, a[kN];
ll l, r, ans;int main() {
#ifndef ONLINE_JUDGEfreopen("in", "r", stdin);freopen("out", "w", stdout);
#endifcin.tie(0)->sync_with_stdio(0);cin >> T;while (T--) {cin >> n >> L >> R;for (int i = 1; i <= n; i++)cin >> a[i];sort(a + 1, a + n + 1), l = r = 0;for (int i = 1; i <= n; i++)l += a[i] - L, r += a[i] - R;ans = min(l, r);for (int i = 1; i <= n; i++) {l += (L - a[i]) - (a[i] - L), r += (R - a[i]) - (a[i] - R);ans = max({ans, min(l - (L - a[i]), r - (R - a[i])), min(l, r)});}cout << ans << '\n';}return 0;
}

\(Solution2\)

巨佬 yq 的做法。显然对于在 \([l, r]\) 以外的点的选法已经固定了,考虑把这些点先算上,最终答案会形成一个一次函数。对于在 \([l, r]\) 内的点,先把 \(k\) 调成 0,再配对选即可

Code
#include <algorithm>
#include <iostream>using namespace std;
using ll = long long;const int kN = 2e5 + 1;int T, n, L, R, a[kN];
ll k, b;int main() {
#ifndef ONLINE_JUDGEfreopen("in", "r", stdin);freopen("out", "w", stdout);
#endifcin.tie(0)->sync_with_stdio(0);cin >> T;while (T--) {cin >> n >> L >> R;for (int i = 1; i <= n; i++)cin >> a[i];sort(a + 1, a + n + 1);for (int i = 1; i <= n; i++) {if (a[i] < L)k++, b -= a[i];else if (a[i] > R)k--, b += a[i];}int l, r;for (l = 1; l <= n && a[l] < L; l++);for (r = n; r >= 1 && a[r] > R; r--);if (k > 0) {for (; r >= l && k; r--)k--, b += a[r];} else {for (; l <= r && k; l++)k++, b -= a[l];}for (; l < r; l++, r--)b += a[r] - a[l];cout << min(k * L + b, k * R + b) << '\n';k = b = 0;}return 0;
}

E. Adjusting Drones

首先需要转化一下题意,这一步是平凡的。接下来同样有两个做法

\(Solution1\)

jjz 发现从后往前依次把能搞的搞完不回影响原答案。直接用线段树维护每个位置的值,只需要区间覆盖和线段树上二分操作即可

\(Solution2\)

有更加简单粗暴的做法。直接往前推,能走就走就行。最后对于每一段的答案取个 \(max\)

Code
#include <cassert>
#include <iostream>using namespace std;const int kN = 1e6 + 1;int T, n, k, ans, a[kN];int main() {
#ifndef ONLINE_JUDGEfreopen("in", "r", stdin);freopen("out", "w", stdout);
#endifcin.tie(0)->sync_with_stdio(0);for (cin >> T; T--; ans = 0) {cin >> n >> k;for (int i = 1, x; i <= n; i++)cin >> x, a[x]++;for (int i = 1, s = 0; i <= 2 * n; i++, s = 0) {for (; a[i] > k; i++, s++)a[i + 1] += a[i] - 1;ans = max(ans, s);}fill(a, a + 3 * n + 1, 0);cout << ans << '\n';}return 0;
}

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

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

相关文章

IPD流程用什么项目管理工具?飞书项目、Primavera P6、Jira、Windchill 功能对比与选型

在实施 IPD(集成产品开发)流程时,选择合适的项目管理工具至关重要。本文系统分析了 飞书项目、Oracle Primavera P6、Jira + Confluence、PTC Windchill 在需求管理、阶段评审、跨部门协同、变更控制、风险闭环等 I…

CF2061H2 Kevin and Stones (Hard Version) 题解

Description Kevin 有一个包含 \(n\) 个顶点和 \(m\) 条边的无向图。初始时,某些顶点上有石子,Kevin 想要将这些石子移动到新位置。 Kevin 可以执行以下操作:对于每个位于 \(u_i\) 的石子,选择一个相邻顶点 \(v_i\…

详细介绍:Java外功基础1Spring Web MVC构建现代Web应用的基石

详细介绍:Java外功基础1Spring Web MVC构建现代Web应用的基石2025-11-24 20:51 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !impor…

大盘风险控制策略分析报告 - 2025年11月24日 - 20:52:39

大盘风险控制策略分析报告 - 2025年11月24日body { font-family: "Microsoft YaHei", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: rgba(51, 51, 51, 1); max-wi…

解码服务器IO模型

IO 模型 服务器 IO 模型是服务端网络程序同时处理多个套接字的核心方案,无论是 UDP 还是 TCP 服务器,都需通过合理的 IO 模型应对多客户端请求场景。以下从核心概念到具体模型,结合代码示例与详细解释展开说明。 UD…

winfrom 操作列 动态按钮

winfrom 操作列 动态按钮public partial class Form1 : Form {public Form1(){InitializeComponent();// 绑定事件this.dataGridView1.CellPainting += DataGridView1_CellPainting;this.dataGridView1.CellClick += D…

蓝桥杯-Python-基础语法

蓝桥杯-Python-基础语法上周开始了蓝桥杯python算法课程的学习,前几部分都是python算法基础,无非是一些加减乘除的运算,但还是需要牢记。在这里总结一些我自己容易遗忘或记错的语法。 一. 算数运算符加 两个对…

电脑重启后WiFi服务没有启动导致WiFi无法开启

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Wcmsvc 双击"DependOnService" 删除其中的WinHttpAutoProxySvc,点击确定。 重启电脑

大盘风险控制策略分析报告 - 2025年11月24日 - 20:51:47

大盘风险控制策略分析报告 - 2025年11月24日body { font-family: "Microsoft YaHei", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: rgba(51, 51, 51, 1); max-wi…

Oracle 数据库体系结构详解

Oracle 数据库体系结构详解一、SGA 相关概念 SGA,全称为 “System Global Area”(系统全局区),是 Oracle 为实例分配的一组共享缓冲存储区,主要用于存放数据库数据和控制信息,供数据库进程共享(PGA 不可共享),…

LRU缓存-leetcode

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中…

总结-esp-idf 接口与抽象层设计

疑惑esp-idf中 lcd、io、bus 像是 spi_bus 和 spi_io 不都是配套出现的吗?那为啥还要分层呢...总结 抽象分层核心思想:分层不是为了拆分,是为了抽象 + 可组合ESP-IDF 的 esp_lcd 框架分为三个层级:BUS 层(硬件接口…

洛谷-训练题-算法1-2

洛谷-训练题-算法1-2$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");P1271 【深基9.例1】选举学生会 题目描述 学校正在选举学生会成员,有 n(1≤n≤999)名…

高性能AI股票预测分析报告 - 2025年11月24日 - 20:46:52

高性能AI股票预测分析报告 - 2025年11月24日body { font-family: "Microsoft YaHei", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: rgba(51, 51, 51, 1); max-wi…

兄弟们我是好

兄弟们我是好BbS.23bbb1.InFo/AuSt/2025_100.tmL BbS.23bbb1.InFo/AuSt/2025_101.tmL BbS.23bbb1.InFo/AuSt/2025_102.tmL BbS.23bbb1.InFo/AuSt/2025_103.tmL BbS.23bbb1.InFo/AuSt/2025_104.tmL BbS.23bbb1.InFo/AuS…

博客园真好用

博客园真好用zq.zhaopin.Com/moment/84854701 zq.zhaopin.Com/moment/84854705 zq.zhaopin.Com/moment/84854715 zq.zhaopin.Com/moment/84854708 zq.zhaopin.Com/moment/84854721 zq.zhaopin.Com/moment/84854720 zq.…

高性能AI股票预测分析报告 - 2025年11月24日 - 20:48:15

高性能AI股票预测分析报告 - 2025年11月24日body { font-family: "Microsoft YaHei", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: rgba(51, 51, 51, 1); max-wi…

肥东三中第19名 黄景行

肥东三中第19名 黄景行黄景行 七年级41班 是肥东三中第19名

增强AI股票预测分析报告 - 2025年11月24日 - 20:43:55

增强AI股票预测分析报告 - 2025年11月24日body { font-family: "Microsoft YaHei", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: rgba(51, 51, 51, 1); max-widt…

102302106-陈昭颖-第三次作业

作业1 实验一,爬取网站内所有图片 要求: 指定一个网站,爬取这个网站中的所有的所有图片,例如中国气象网(http://www.weather.com.cn)。实现单线程和多线程的方式爬取。 核心代码 def get_image_url(url, result_…