Codeforces Round 1056 (Div. 2) A~D

news/2025/10/10 15:24:43/文章来源:https://www.cnblogs.com/Kescholar/p/19132144

A - El fucho

模拟。

胜者组共有 \(n-1\) 队进入败者组,进入败者组的会淘汰 \(n-2\) 队,最后剩两组再进行一场,总场数 \(2n-2\)

不会算也可以直接模拟。

点击查看代码
#include <bits/stdc++.h>using i64 = long long;void solve() {int n;std::cin >> n;int m = 0, ans = 0;while(n > 1) {ans += n / 2;m += n / 2;n -= n / 2;}while(m > 1) {ans += m / 2;m -= m / 2;}ans += 1;std::cout << ans << "\n";}
int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t;std::cin >> t;while (t--) {solve();}return 0;
}

B - Abraham's Great Escape

构造。

只要有两个就可以构造出 \(\text{LR}\) 这样的循环,然后其他的可以在第一排放 \(\text L\) 指向它,然后再在下面的排放 \(U\) 指向它,其他走出迷宫放 \(D\) 即可。

点击查看代码
#include <bits/stdc++.h>using i64 = long long;void solve() {int n, k;std::cin >> n >> k;if(n * n - k == 1) {std::cout << "NO\n";return;}k = n * n - k;std::vector<std::string> ans(n, std::string(n, 'D'));if(k) {k -= 2;ans[0][0] = 'R', ans[0][1] = 'L';for(int i = 2; i < n && k; i += 1, k -= 1) {ans[0][i] = 'L';}for(int i = 1; i < n && k; i += 1) {for(int j = 0; j < n && k; j += 1) {ans[i][j] = 'U';k -= 1;}}}std::cout << "YES\n";for(int i = 0; i < n; i += 1) {std::cout << ans[i] << "\n";}}
int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t;std::cin >> t;while (t--) {solve();}return 0;
}

C - The Ancient Wizards' Capes

思维。

通过手玩可以发现答案只有三种,限制太强;对于 \(|a_i-a_{i-1}|\ge 2\) 这种直接不存在,假设 \(a_i > a_{i-1}\),那么除去 \(a_i\)\(a_{i-1}\)\(a_{i-1}\) 至少也能看见 \(a_i - 2\) 个,加上它自己,只能是比 \(a_i\) 多一或者少一。

\(a_i=a_{i-1}\) 时,\(a_i\)\(a_{i-1}\) 是相反的,因为它们都能看见除掉它们两个之外的其他,它们相等,所以它们得互防;\(a_i > a_{i-1}\ \text{or}\ a_i < a_{i-1}\) 也是同理,它们之间会因为朝向而每防住另一个,此时朝向的是固定的。

所以可以枚举 \(a_1\) 作为 \(\text{LR}\),然后得出其他数的朝向,最后对每个数算一下左右两边看见和 \(a_i\) 是否相等即可,这里是用线段树进行维护。

点击查看代码
#include <bits/stdc++.h>using i64 = long long;template<class Info>
struct SegmentTree {int n;std::vector<Info> info;SegmentTree() : n(0) {}SegmentTree(int n_, Info v_ = Info()) {init(n_, v_);}template<class T>SegmentTree(std::vector<T> init_) {init(init_);}void init(int n_, Info v_ = Info()) {init(std::vector(n_, v_));}template<class T>void init(std::vector<T> init_) {n = init_.size();info.assign(4 << std::__lg(n), Info());std::function<void(int, int, int)> build = [&](int p, int l, int r) {if (r - l == 1) {info[p] = init_[l];return;}int m = (l + r) / 2;build(2 * p, l, m);build(2 * p + 1, m, r);pull(p);};build(1, 0, n);}void pull(int p) {info[p] = info[2 * p] + info[2 * p + 1];}void modify(int p, int l, int r, int x, const Info &v) {if (r - l == 1) {info[p] = v;return;}int m = (l + r) / 2;if (x < m) {modify(2 * p, l, m, x, v);} else {modify(2 * p + 1, m, r, x, v);}pull(p);}void modify(int p, const Info &v) {modify(1, 0, n, p, v);}Info rangeQuery(int p, int l, int r, int x, int y) {if (l >= y || r <= x) {return Info();}if (l >= x && r <= y) {return info[p];}int m = (l + r) / 2;return rangeQuery(2 * p, l, m, x, y) + rangeQuery(2 * p + 1, m, r, x, y);}Info rangeQuery(int l, int r) {return rangeQuery(1, 0, n, l, r);}template<class F>int findFirst(int p, int l, int r, int x, int y, F &&pred) {if (l >= y || r <= x) {return -1;}if (l >= x && r <= y && !pred(info[p])) {return -1;}if (r - l == 1) {return l;}int m = (l + r) / 2;int res = findFirst(2 * p, l, m, x, y, pred);if (res == -1) {res = findFirst(2 * p + 1, m, r, x, y, pred);}return res;}template<class F>int findFirst(int l, int r, F &&pred) {return findFirst(1, 0, n, l, r, pred);}template<class F>int findLast(int p, int l, int r, int x, int y, F &&pred) {if (l >= y || r <= x) {return -1;}if (l >= x && r <= y && !pred(info[p])) {return -1;}if (r - l == 1) {return l;}int m = (l + r) / 2;int res = findLast(2 * p + 1, m, r, x, y, pred);if (res == -1) {res = findLast(2 * p, l, m, x, y, pred);}return res;}template<class F>int findLast(int l, int r, F &&pred) {return findLast(1, 0, n, l, r, pred);}
};struct Info {int cnt[2] {};
};Info operator+(const Info &l, const Info &r) {return {l.cnt[0] + r.cnt[0], l.cnt[1] + r.cnt[1]};
}void solve() {int n;std::cin >> n;std::vector<int> a(n);for(int i = 0; i < n; i += 1) {std::cin >> a[i];}for(int i = 1; i < n; i += 1) {if(abs(a[i] - a[i - 1]) > 1) {std::cout << 0 << "\n";return;}}SegmentTree<Info> seg(n);int ans = 0;for(int x = 0; x < 2; x += 1) {int lst = x;seg.modify(0, {1 - x, x});for(int i = 1; i < n; i += 1) {int now;if(a[i] == a[i - 1]) {now = lst ^ 1;} else if(a[i] > a[i - 1]) {now = 0;} else {now = 1;}seg.modify(i, {1 - now, now});lst = now;}bool ok = true;for(int i = 0; i < n; i += 1) {auto res = seg.rangeQuery(0, i + 1);auto res2 = seg.rangeQuery(i, n + 1);if(a[i] != res.cnt[0] + res2.cnt[1]) {ok = false;break;}}ans += ok;}std::cout << ans << "\n";}
int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t;std::cin >> t;while (t--) {solve();}return 0;
}

D - Batteries

思维。

把电池按顺序摆放成一个环,每次选相邻两个数可以确定相邻两个是否存在一对好电池,同理选相隔一个的可以确定每三个是否存在一对好电池,假设两好电池间的最短距离长度为 \(l\),这样最多在第 \(l\) 轮就能找到,设好电池数量为 \(a\),则最短区间距离最大为 \(\lfloor\frac{n}{a}\rfloor\),每个数找一次,这样最多 \(n\times\lfloor\frac{n}{a}\rfloor\) 次就能找到,满足 $n\times\lfloor\frac{n}{a}\rfloor\le \lfloor\frac{n^2}{a}\rfloor $。

可能更严谨的证明(?
\(q = \lfloor\frac{n}{a}\rfloor\),则有 \(q\le \frac na< q+1\),由 \(q\le \frac na\),可得 \(nq\le \frac{n^2}a\);又因为 \(nq\) 是整数,\(\lfloor\frac{n^2}{a}\rfloor\) 是小于等于 \(\frac{n^2}a\) 的最大正整数,所以 $nq\le \lfloor\frac{n^2}{a}\rfloor \rightarrow n\times\lfloor\frac{n}{a}\rfloor\le \lfloor\frac{n^2}{a}\rfloor $。

点击查看代码
#include <bits/stdc++.h>using i64 = long long;void solve() {int n;std::cin >> n;auto ask = [](int x, int y)->bool{std::cout << x << " " << y << std::endl;int res;std::cin >> res;return res;};for(int i = 1; i <= n; i += 1) {for(int j = 1; j <= n; j += 1) {int to = j + i;if(to > n){to -= n;}if(ask(j, to)) {return ;}}}}
int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t;std::cin >> t;while (t--) {solve();}return 0;
}

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

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

相关文章

现代软件工程阅读和提问作业-1

在学习本课程之前,一直会有一种疑惑,即什么是现代软件工程?软件的开发? 首先谈一谈我对软件的理解,我认为比如手机使用的APP,小程序以及任何通过鼠标或手指点击能够执行特定功能的“工具”都叫软件。

一种CDN动态加速回源白名单选路及降低源站探测量的方法

本文分享自天翼云开发者社区《一种CDN动态加速回源白名单选路及降低源站探测量的方法》.作者:蒋辉 本方案主要包括以下几个方面: 1)本发明提出了一种减少跨运营商探测源站及回源的方法,技术方案流程图见附图1,具体…

Windows系统-应用问题全面剖析Ⅰ:德承工控机DA-1200在Windows操作系统下[开机黑屏]的解决方法 - Johnny

Windows系统作为全球市场份额最高的操作系统,承载着企业办公、个人娱乐、工业应用等多元场景需求。然而,在使用过程中若出现应用崩溃、兼容性冲突、性能出现异常等系统应用问题时,将会直接影响到用户体验甚至是生产…

Java文件路径/服务器路径的获取

Java文件路径/服务器路径的获取Java文件路径/服务器路径的获取 大家好,又见面了,我是你们的朋友全栈君。Java文件路径获取几种获取方式 getResourceAsStream ()返回的是inputstreamgetResource()返回:URLClass.getRe…

某中心在旧金山设立AGI实验室专注长期AI研究

某中心在旧金山成立全新AGI实验室,专注于开发能够在数字和物理世界执行任务的人工智能代理。实验室将结合大语言模型与强化学习技术,致力于实现能够从人类反馈中学习、自我修正并推断目标的实用AI系统。某中心在旧金…

Appcrawler自动遍历工具-智能遍历测试与测试用例生成

效率与成本的抉择 在软件开发过程中,测试环节直接影响产品质量和用户体验。随着系统迭代频繁、功能复杂化,企业在测试方法的选择上面临困境:手工测试灵活却效率低,自动化测试高效却前期投入大。那么,我们到底应该…

[USACO20FEB] Clock Tree S

一开始读错题意了。 然后以为自己做法假了,实际并没有。 有 \(O(n)\) 做法但我写的是 \(O(n^2)\) 的。 换根dp就行了,每次判断一下能不能成功。 注意如果到最后根是 \(1\) 也是可以成功的。点击查看代码 #include<…

完整教程:【Spark+Hive+hadoop】人类健康生活方式数据分析

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

mysql查看表大小,4种实用方法

MySQL数据库运维中,掌握表的大小信息对于性能优化、容量规划和维护工作至关重要。本文将详细介绍4种查看MySQL表大小的实用方法,帮助你精准掌握数据库存储状况。 方法1:查看单个表的完整大小信息 使用以下SQL可以查…

微算法科技(NASDAQ:MLGO)开发延迟和隐私感知卷积神经网络分布式推理,助力可靠人工智能系统技术

随着人工智能(AI)技术的不断发展,智能服务的广泛应用正在深刻改变着各行各业的面貌。在这个过程中,基于深度学习的系统往往面临计算资源的巨大需求,尤其是在边缘设备上运行复杂的卷积神经网络(CNN)时,计算负载…

不止节能,更能 “生钱”:MyEMS 辅助企业参与电力现货市场的实操案例

随着我国电力市场化改革的不断深化,电力现货市场从试点逐步走向常态化运行。对于用电大户企业而言,这既是机遇 —— 可通过灵活调整用电策略享受电价波动红利,也是挑战 —— 传统用电模式难以应对复杂的电价机制,往…

当能耗监控变 “游戏”:MyEMS 可视化看板如何让员工主动参与节能?

在企业节能管理中,“员工被动接受监控” 是长期存在的痛点 —— 传统能耗数据报表枯燥难懂,员工既不清楚自己的行为与能耗的关联,也缺乏主动节能的动力。而 MyEMS(My Energy Management System)可视化看板的出现,…

微算法科技(NASDAQ:MLGO)基于任务迁移的弹性框架重塑动态扩缩容,赋能边缘智能计算

在全球数字化进程加速的今天,边缘计算(Edge Computing,简称EC)作为推动移动互联网、物联网和智能终端普及的关键技术,正被赋予越来越多的期待。随着用户对于实时性、可靠性以及高性能数据处理需求的不断提升,传统…

从小时级到分钟级:多点DMALL如何用Apache SeaTunnel把数据集成成本砍到1/3?

过去我们依赖 Spark 自研同步工具,虽然稳定,却面临“启动慢、资源重、扩展难”的痛点。作者 | 贾敏 多点DMALL 资深大数据研发工程师 作者介绍 贾敏,多点 DMALL 资深大数据研发工程师,主导公司核心数据集成平台架构…

2025 最新隔音棉生产厂家口碑推荐榜:甄选实力与品质兼具的品牌,含西南 / 昆明高性价比厂商最新推荐防火墙/内衬/鸡蛋/聚酯纤维/装修/吊顶隔音棉厂家推荐

随着建筑装饰、汽车改装等领域对声学环境要求的升级,隔音棉市场需求持续扩大,但行业乱象让采购者面临多重挑战。部分厂商为压低成本选用劣质基材,导致产品隔音量不足、防火环保不达标,潮湿环境下易发霉老化;新品牌…

2025 年高强钢板厂家最新推荐排行榜:聚焦国内优质企业,涵盖多型号产品,助力工业采购精准选型Q550D/合金/HG785D/ Q690D/S960QL/700L高强钢板厂家推荐

当前,高强钢板作为工业生产的关键基础材料,在矿山、冶金、电力、汽车制造等领域的应用愈发广泛,下游行业对其耐磨、耐蚀、高强度等性能的要求也不断提高。然而,市场上高强钢板供应商资质参差不齐,部分产品存在耐磨…

2025 升降杆厂家TOP 榜:梁山信达恒泰,专注多领域设备供应,气动型升降杆源头厂家推荐!

随着智慧城市建设、安防监控升级及市政基础设施完善,升降杆作为支撑通讯设备、监控摄像头、照明系统的核心载体,市场需求持续增长。但行业现存诸多痛点:部分厂家使用薄壁钢材、劣质焊接工艺压缩成本,导致升降杆抗风…

2025 年最新推荐耐磨钢板生产厂家排行榜:涵盖高锰 / 堆焊 / 双金属 / NM 系列及无磁类型,解决采购难题助力企业选高性价比品牌

在矿山、冶金、电力等重工业及轻工业领域,耐磨钢板作为核心耗材,其质量与性能直接关联设备运行效率、维护成本及企业生产稳定性。当前市场中,耐磨钢板厂家数量繁杂,产品规格多样、价格跨度大,且部分厂家存在压缩成…

Playwright MCP 与 Claude 的完美协作:打造网页操作智能体

当最智能的大脑遇见最灵活的手 想象一下,您可以用自然语言对AI说:“请帮我找到最近三个月内关于AI代理的最新研究论文,下载PDF并整理成一个摘要表格”,然后它就能自动打开浏览器,导航到学术网站,执行搜索、筛选、…

高纯气体管道工程安装公司厂家推荐/管道施工队哪家好?

高纯气体管道工程安装公司厂家推荐/管道施工队哪家好? 南京联俊流体技术有限公司是高纯气体管道工程安装领域的优质选择,其核心优势体现在专业资质、技术实力、服务体系及行业口碑四大方面,具体分析如下: 一、专业…