ABC398 D~F

news/2025/3/26 1:39:28/文章来源:https://www.cnblogs.com/biyimouse/p/18787533

D - Bonfire

注意到对于一个第 \(t\) 秒产出的云会进行 \([t+1, N]\) 秒的所有操作,所以我们不妨维护一个操作坐标的前缀和 \(S_t\)。如果第 \(t\) 秒人被云覆盖了的话,那么一定存在第 \(x\) 秒产出的云使得 \(S_t - S_x = (R, C)\)。直接维护一下 \(S_t - (R,C)\) 是否出现过即可。

map<PII, bool> h;
int n, r, c;
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, -1, 0, 1};int main() {cin >> n >> r >> c;if (r == 0 && c == 0) {rep(i, 1, n) printf("1");return 0;}int x = 0, y = 0;h[{0, 0}] = true;rep(i, 1, n) {char op; int k;scanf(" %c", &op);if (op == 'N') k = 0;else if (op == 'W') k = 1;else if (op == 'S') k = 2;else k = 3;x = x + dx[k], y = y + dy[k];if (h.count({x - r, y - c})) printf("1");else printf("0");h[{x, y}] = true;}return 0;
}

F - ABCBA

\(F\) 真人机题吧,过的人比 \(E\) 多一万倍。

容易发现我们肯定要保留原字符串的最长回文后缀,然后把剩下的部分倒过来接在后面,比如 EAEEA 就可以变化成 EAEEAE。这样一定是最优的。

设原字符串为 \(S\),它翻转过来为 \(T\),我们可以用 T+#+S 这样的方式将其连接起来,然后做一遍 KMP。此时 \(next_{|T|+|S|+1}\) 就是最长回文后缀的长度。

const int N = 2000010;
int n, ne[N];
char s[N], t[N];int main() {scanf("%s", s + 1); n = strlen(s + 1);rep(i, 1, n) t[n - i + 1] = s[i];t[n + 1] = '#';rep(i, n + 2, 2 * n + 1) t[i] = s[i - n - 1];n = 2 * n + 1;for (int i = 2, j = 0; i <= n; i ++) {while (j && t[j + 1] != t[i]) j = ne[j];if (t[i] == t[j + 1]) j ++;ne[i] = j;}int ans = ne[n];n = (n - 1) / 2;rep(i, 1, n) cout << s[i];fro(i, n - ans, 1) cout << s[i];return 0;
}

E - Tree Game

为什么输出边的时候编号小的要在前啊!

没有奇环可以转化为在加边的过程中保证图是二分图。而最初给出的树一定是二分图,所以我们不妨最这棵树二分图染色,确定出二分图的左部点和右部点,统计一下还可以添加的边数 \(S\)。如果 \(S\) 是奇数就先手,否则后手。然后不断地取还能加的边即可。

\(N \leq 100\),所以我代码乱搞也能过。

const int N = 200010, M = 1000010;
int n, m;
int h[N], e[M], ne[M], idx;
int c[N];
bool vis[N];
map<PII, bool> H, st;
vector<int> g1, g2;
vector<PII> Edges;void add(int a, int b) {e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}bool dfs(int u, int col) {c[u] = col, vis[u] = true;for (int i = h[u]; ~i; i = ne[i]) {int v = e[i];if (!vis[v]) {if (!dfs(v, 3 - col)) return false; } else if (c[v] != 3 - col) return false;}return true;
}int main() {cin >> n;memset(h, -1, sizeof h);rep(i, 1, n - 1) {int x, y;cin >> x >> y;add(x, y); add(y, x);H[{x, y}] = H[{y, x}] = true;   }rep(i, 1, n)if (!vis[i]) dfs(i, 1); rep(i, 1, n) if (c[i] == 1) g1.push_back(i);else g2.push_back(i);for (auto u : g1) for (auto v : g2)if (!H.count({u, v})) {Edges.push_back({min(u, v), max(u, v)});st[{u, v}] = st[{v, u}] = true;}if (Edges.size() & 1) cout << "First" << endl;else cout << "Second" << endl;if (Edges.size() & 1) {cout << Edges.back().first << ' ' << Edges.back().second << endl;st[Edges.back()] = st[{Edges.back().second, Edges.back().first}] = false;}int x, y;while (cin >> x >> y) {if (x == -1 && y == -1) return 0;st[{x, y}] = st[{y, x}] = false;for (auto &[u, v] : Edges) if (st[{u, v}]) {cout << u << ' ' << v << endl;st[{u, v}] = st[{v, u}] = false;break;}}return 0;
}

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

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

相关文章

第五章 影响估算的因素

对软件项目产生影响的因素,可以有多种分类方式。了解这些影响因素有助于提高估算的准确度,并改善对软件项目动态特性的整体理解。 影响到项目工作量、成本和进度的最具决定性的因素毫无疑问是项目的规模。其次是正在开发的软件的类型,紧随其后的是人员因素。开发中使用的编程…

2025.3.25(周二)

4、航空服务查询问题:根据航线,仓位,飞行时间查询航空服务。 假设一个中国的航空公司规定:① 中国去欧美的航线所有座位都有食物供应,每个座位都可以播放电影。② 中国去非欧美的国外航线都有食物供应,只有商务仓可以播放电影。③ 中国国内的航班的商务仓有食物供应,但是…

2025.3.19(周三)

2、找零钱最佳组合假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。假定此商店的货币面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四种。请结合等价类划分法…

如何使用microSD卡模块与Arduino

MicroSD卡模块 ESP32有不同的microSD卡模块兼容。我们使用microSD卡模块,它使用SPI通信协议进行通信。您可以使用带有SPI接口的任何其他microSD卡模块。这个microSD卡模块也与Arduino板等其他微控制器兼容。学习如何使用microSD卡模块与Arduino。您可以使用默认SPI引脚将其连接…

VMware ESXi 8.0U3d macOS Unlocker OEM BIOS 集成 Marvell AQC 网卡驱动定制版 (集成驱动版)

VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 集成 Marvell AQC 网卡驱动定制版 (集成驱动版)VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 集成 Marvell AQC 网卡驱动定制版 (集成驱动版) VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe …

2025.3.10(周一)

实验二:UI设计 实验目的 本次实验的目的是让大家熟悉Android开发中的UI设计,包括了解和熟悉常用控件的使用、界面布局和事件处理等内容。 实验要求熟悉和掌握界面控件设计 了解Android界面布局 掌握控件的事件处理实验内容 一、 常用控件 1、 常用控件介绍 (1)基本控…

设计一个简单的圆柱形情绪灯

步骤1:打印零件和闪光WLED 3D打印外壳 下载提供的STL或STEP文件,并将它们加载到您首选的切片软件中。调整设置(填充,层高度,支撑),如果需要,打印每个部分。我使用白色PLA,填充15%,层高0.2mm。对于扩散器,它只是一个固体圆柱体,在花瓶模式下打印它。 一旦打印完成,把…

构建一个Pedro Robot

Pedro 2.0是一个完全开源的项目,旨在为每个人提供可访问和可定制的服务。Pedro Robot是一个完全开源的项目,设计为每个人都可以访问和定制。组装起来很容易,不需要螺丝,不需要胶水,不需要工具!完美的制造商,学生和教育工作者希望探索机器人和编程。 所有文档都可以在Pedr…

一文搞懂MCP协议与Function Call的区别

一、前言 大家好,我是六哥! 今天咱们聊聊编程里两个听起来有点复杂的概念——MCP协议和函数调用(function call),其实用大白话来讲,它们就是两种不同的“沟通方式”,就像咱们人与人之间交流也有不同的方式一样。下面我就用生活中的例子和Python代码,给大家好好讲讲它们…

基于Arduino设计RFID门锁系统

使用基于arduino的RFID锁系统实现无缝,无钥匙进入和增强保护,从而改变您的门安全性。你是否厌倦了每次需要开门时都要找钥匙?不如建一个智能锁系统,你只需刷卡就能开门?在本节中,我们将学习如何使用Arduino构建RFID门锁系统。这是一种既有趣又安全的开门方式。 这个Ardui…

MQ消息持久化解决方案

消息持久化 1. RabbitMQ 发送与消费消息的模型2. 消息丢失的几种情况?生产者发送消息未到达交换机消息到达交换机,没有正确路由到队列MQ 宕机,队列中的消息不见了消费者收到消息,还没消费,消费者宕机3. 如何保证消息不丢失? 3.1 生产者确认机制publisher-confirm消息成功…