Codeforces Round 1058 (Div. 2) A~E

news/2025/10/16 14:51:39/文章来源:https://www.cnblogs.com/Kescholar/p/19145631

A - MEX Partition

思维?

\(a\)\(\text{mex}\)

关于证明,参考官方题解:

首先,让 \(m=\operatorname{mex}(A)\) 。我们可以忽略所有大于 \(m\) 的元素。这是因为由于 \(m\) 是 mex, \(m\) 不会出现在 \(A\) 中,因此它也不会出现在任何分区中。因此,每个元素进入哪个分区并不重要。
现在,我们来看看数字 \(0\) 。假设在 \(A\) 中至少有一个 \(0\) 。那么,分区中至少有一个多集合必须包含 \(0\) (因为 \(A\) 中的每个元素都必须包含在分区中的一个多集合中)。这也意味着所有多集都必须包含 \(0\) ,否则所有多集的 \(\operatorname{mex}\) 就不可能相同(对某些多集来说是 \(0\) ,但对另一些多集来说大于 \(0\) )。
一旦我们得出 \(0\) 必须存在于所有分集中的结论,我们就可以对 \(1,2,\ldots,m-1\) 做出同样的结论。也就是说, \(m\) 是唯一可能的分数。

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

B - Distinct Elements

差分,构造。

考虑每个数产生的贡献,记 \(b_i-b_{i-1}=x\),如果 \(x=i\),说明第 \(i\) 位置产生了 \(i\) 个贡献,即一定是前面没有出现过的数,记 \(\text{now}\) 代表出现过的最后一个数字,那么 \(ans_i=\text{now}+1\),否则一定是在前面第 \(i-x\) 个位置就出现过的数,这样才只产生了 \(x\) 的贡献,即 \(ans_i=ans_{i-x}\)

点击查看代码
#include <bits/stdc++.h>using namespace std;using i64 = long long;void solve() {int n;std::cin >> n;std::vector<i64> b(n), a(n);for (int i = 0; i < n; i += 1) {std::cin >> b[i];a[i] = b[i];if (i) {a[i] -= b[i - 1];}}int now = 1;std::vector<int> ans(n);ans[0] = 1;for (int i = 1; i < n; i += 1) {if(a[i] == i + 1){ans[i] = ++now;}else{ans[i] = ans[i - a[i]];}}for (int i = 0; i < n; i += 1) {std::cout << ans[i] << " \n"[i + 1 == n];}}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin >> t;while (t--) {solve();}return 0;
}	

C - Reverse XOR

枚举。

\(x\) 二进制翻转之后异或等于 \(n\),那么说明 \(n\) 的某位上为 \(1\) 的话,它的这一位一定与它的翻转位是不同的,同样 \(n\) 的与这一位相对的翻转位上也应该为 \(1\),说明 \(n\) 可能是以某一位为轴,然后对称的,且这一位一定是 \(0\),因为如果以某一位为轴中心且是 \(1\),那么翻转后异或应该为 \(0\);也可能是以某两位中间为轴进行对称。

检查一下从哪位(或者哪两位中间)开始对称的,最后是否能凑出 \(n\) 即可。

点击查看代码
#include <bits/stdc++.h>using namespace std;using i64 = long long;void solve() {int n;std::cin >> n;for (int i = 29; i >= 0; i -= 1) {int cnt = 0;if (~n >> i & 1) {for (int j = 1; j + i <= 60 && i - j >= 0; j += 1) {int x = n >> (i + j) & 1, y = n >> (i - j) & 1;if (x == y && x == 1) {cnt += 2;}if (x ^ y) {break;}}if (cnt == __builtin_popcount(n)) {std::cout << "YES\n";return;}}cnt = 0;for (int j = 1; j + i <= 60 && i - j + 1 >= 0; j += 1) {int x = n >> (i + j) & 1, y = n >> (i - j + 1) & 1;if (x == y && x == 1) {cnt += 2;}if (x ^ y) {break;}}if (cnt == __builtin_popcount(n)) {std::cout << "YES\n";return;}}std::cout << "NO\n";}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin >> t;while (t--) {solve();}return 0;
}

D - MAD Interactive Problem

思维。

首先可以确定的是,如果我们现在有 \(n\) 个不知道位置的值,只知道它们互不相同,那么拿这 \(n\) 个数和任意一个其他位置询问得到的答案就是这个位置的答案。

所以可以先进行 \(2n\) 次询问,维护不确定数的位置,即使前 \(n\) 个数都不相同,也能得出后 \(n\) 个数。

同理,如果我们现在有 \(n\) 个知道位置的值,并且它们互不相同,那么拿这 \(n\) 个数和任意一个其他位置询问得到的答案同样也是这个位置的答案。

由前面 \(2n\) 次得出 \(n\) 个已知的数后,再拿这 \(n\) 个数挨个去询问之前不确定的数,最多 \(n\) 次便得到全部数组。

点击查看代码
#include <bits/stdc++.h>using namespace std;using i64 = long long;void solve() {int n;std::cin >> n;auto ask = [](std::vector<int> v)->int{std::cout << "? " << v.size() << " " ;sort(v.begin(), v.end());for (auto &x : v) {std::cout << x << " ";} std::cout << std::endl;int res;std::cin >> res;return res;};auto asnwer = [](vector<int> &v)->void{std::cout << "! ";for (auto &x : v) {std::cout << x << " ";} std::cout << std::endl;};std::vector<int> ans(2 * n), pos(n), has, exit;has.push_back(1);for (int i = 1; i < 2 * n; i += 1) {has.push_back(i + 1);if (has.size() == 1) {continue;} else {auto res = ask(has);if (res) {ans[i] = res;has.pop_back();if (has.size() == 1) {ans[has.back() - 1] = res;has.pop_back();} else {exit.push_back(i + 1);}}}}for (auto &x : has) {exit.push_back(x);auto res = ask(exit);ans[x - 1] = res;exit.pop_back();}asnwer(ans);
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin >> t;while (t--) {solve();}return 0;
}

E - Rectangles

思维。

考虑枚举 \(u,d\) 两行,把两行有 \(1\) 的列标记,那么当前 \(d\) 行当前列有 \(1\) 时构成的最小矩阵就应该是它的前一个 \(1\),记当前列为 \(i\),上一个 \(1\) 所在的列为 \(lst\),那么在 \(d\)\([lst,i]\) 的区间内的答案就是 \((d-u+1)\times (i-lst+1)\),此时不必着急对 \(u\sim d-1\) 的答案进行更新,先管每一行的,枚举 \(d\) 算完 \(u+1\sim n\) 后从 \(n\) 开始到 \(u+1\) 行的每一列取后缀最小值即可更新第 \(u\) 行开头的矩阵贡献的答案。

这样的复杂度是 \(O(n^2m)\) 的,显然 \(n\) 大的时候不可取,可以发现,有 \(\min(n,m)\le \sqrt{nm}\),所以当 \(n\) 大的时候可以反过来枚举列,这样就能保证复杂度为 \(O(nm\min(n,m))\)\(O(nm\sqrt{nm})\)

点击查看代码
#include <bits/stdc++.h>using i64 = long long;void solve() {int n, m;std::cin >> n >> m;std::vector a(n, std::vector<int>(m));for(int i = 0; i < n; i += 1) {std::string s;std::cin >> s;for(int j = 0; j < m; j += 1) {a[i][j] = s[j] - '0';}}const int inf = 1E9;auto swap = [&](std::vector<std::vector<int>> &a)->void {std::vector res(m, std::vector<int>(n, inf));for(int i = 0; i < n; i += 1) {for(int j = 0; j < m; j += 1) {res[j][i] = a[i][j];}}a = std::move(res);return ;};bool f = false;if(n > m) {f = true;swap(a);std::swap(n, m);}std::vector ans(n, std::vector<int>(m, inf));for(int u = 0; u < n; u += 1) {for(int d = u + 1; d < n; d += 1) {int lst = -1;for(int i = 0; i < m; i += 1) {if(a[u][i] && a[d][i]) {if(~lst) {int S = (d - u + 1) * (i - lst + 1);for(int j = lst; j <= i; j += 1) {ans[d][j] = std::min(ans[d][j], S);}}lst = i;}}}for(int i = n - 2; i >= u; i -= 1) {for(int j = 0; j < m; j += 1) {ans[i][j] = std::min(ans[i][j], ans[i + 1][j]);}}}if(f) {swap(ans);std::swap(n, m);}for(int i = 0; i < n; i += 1) {for(int j = 0; j < m; j += 1) {if(ans[i][j] == inf) {ans[i][j] = 0;}std::cout << ans[i][j] << " \n"[j + 1 == m];}}}
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/938259.shtml

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

相关文章

2025 年生料带厂家最新推荐排行榜:解析优质品牌优势,涵盖新型、彩色、液态等多类型生料带厂家企业推荐

在螺纹密封领域,生料带的质量与性能对家庭生活、工业生产的安全稳定至关重要。当前市场上,部分生料带密封性能差,导致家庭水管、燃气管道漏水漏气,引发资源浪费与安全隐患;工业场景中,许多产品耐温、耐腐蚀性不足…

openresty开发lua-resty-openssl之对称加密解密 - liuxm

openresty开发lua-resty-openssl之对称加密解密local cipher = require "resty.openssl.cipher" local rand = require "resty.openssl.rand" local pkey = require "resty.openssl.pkey&quo…

腾讯云 OpenCloudOS 8 docker安装

腾讯云 OpenCloudOS 8 docker安装腾讯云 OpenCloudOS 8 docker安装 1:更新系统sudo yum update -y2:安装依赖包sudo yum install -y yum-utils device-mapper-persisten-data lvm23:添加docker官方仓库sudo yum-confi…

哈希乱搞:CF1418G Three Occurrences

这道题看起来并不是那么好做,看到题解神秘做法,记录下来。 考虑枚举右端点,统计符合条件的左端点数量。 发现 3 这个数字很小,发现区间中的数我们仅仅需要知道它 %3 的值。 我们如果可以记录一个位置前缀中所有值的…

2025 年废旧轮胎裂解加热生产厂家最新推荐榜单:优质企业专利技术、产能规模与口碑实力全景解析锂化工焚烧炉/氟化热风系统/煤化工热风炉厂家推荐

随着环保政策趋严与资源循环利用需求激增,废旧轮胎回收利用行业进入高速发展期,而裂解加热作为核心工序,其设备质量直接决定生产效率、环保达标情况与企业成本控制。当前市场上,废旧轮胎裂解加热设备厂家数量众多,…

悲伤 自卑 乖戾 独自哭泣 陪伴空虚 kill my memory 让我将痛苦全忘记

test21 摩尔县mex 首先 \(\text{mex} \{a_{l,\dots,r}\}\neq k\) 的条件是 \(\exists i\in [l,r],a_i=k\) 或者 \(\exists v\in [0,k),\forall a_i\neq v\)。所以我们修改的办法有两种, \((a_i<k)\to k\) 阻隔跨越…

日志 | 2025.10

总结251011 A (1h,20/70+) 先写的前两个部分分 然后后面想到了找间隔一个以内的两个相等的数,分别从前和后将比第一个比他大的数改掉的做法 不太会算复杂度 大概是平方以内的 但是过了1e5的大样例 结果因为输入的数…

工程师的 “指尖实验室”!正点原子 LT1 电桥镊子深度测评:同价位竞品谁能打?

工程师的 “指尖实验室”!正点原子 LT1 电桥镊子深度测评:同价位竞品谁能打? 电子工程师和爱好者的工具箱里,永远缺一件趁手的测量工具 —— 万用表测不准高频元件,专业电桥又便携性不足,直到正点原子 LT1 智能数…

【ACM出版|EI检索稳定】2025年AI驱动下:业务转型和数据科学创新国际学术会议(ICBTDS 2025)

为探讨AI技术前沿、分享最佳实践、促进跨界合作,2025 AI驱动下:业务转型和数据科学创新国际学术会(ICBTDS 2025)议将于2025年11月14-16日在印度尼西亚-万隆隆重召开。 本次会议旨在搭建一个高水平的国际学术交流平…

破解跨域监控难题:国标GB28181算法算力平台EasyGBS视频调阅技术在跨域安防监控中的核心应用

破解跨域监控难题:国标GB28181算法算力平台EasyGBS视频调阅技术在跨域安防监控中的核心应用在雪亮工程、智慧城市等大型安防项目中,海量监控设备分布在不同区域、归属不同管理单位,形成一个个信息孤岛。设备协议不一…

2025 年电缆桥架源头厂家最新推荐排行榜:聚焦优质供应商核心竞争力,助力工程采购精准选型

在工业与建筑行业高速发展的当下,电缆桥架作为电力传输与通信线路铺设的关键设施,市场需求持续增长,但行业乱象却给采购者带来诸多困扰。部分厂家为压缩成本偷工减料,导致产品质量参差不齐,存在严重安全隐患;多数…

2025 年厂房出售公司服务推荐排行榜:珠三角/广州/深圳/东莞/佛山/珠海等城市优质厂房出售公司全面测评解析

在 2025 年产业结构持续优化、企业扩张需求激增的背景下,广东及珠三角区域(含广州、深圳、东莞、佛山、珠海等核心城市)成为厂房需求的核心区域。但当前市场存在房源信息分散、产业适配性不足、配套服务参差不齐等问…

构建智能视觉中枢:国标GB28181算法算力平台EasyGBS的全域感知与播放方案

构建智能视觉中枢:国标GB28181算法算力平台EasyGBS的全域感知与播放方案在这个日新月异的时代,科技如同一股不可阻挡的潮流,深刻地改变着我们的生活方式。从智能家居到智慧城市,从远程办公到在线教育,科技的触角已…

别再乱排查了!Kafka 消息积压、重复、丢失,根源基本都是 Rebalance!

大家好,我是小富~ 有次上线监控告警突然炸了,Kafka 订单 Topic 消息积压量突破 10 万条,下游支付服务拿不到数据,部分用户付款后一直显示处理中。 紧急登录集群排查,发现消费者组明明有 3 个节点,却只有 1 个在…

2025年交通杯-爆破题wp

题目:解压就俩文件,就是要通过txt的历史密码推测出现在1.zip的新密码。history-pwd.txt内容为:之前的一般思路是错的,估计大部分的思路跟我们一开始一样。认为是Mysql、Nginx、Oracle、Tomcat、Weblogic等的组合。…

挖象浏览器下载安装教程|支持淘宝、拼多多、抖音多平台账号分区管理

挖象浏览器是一款专为电商行业打造的全能浏览器。它支持淘宝、拼多多、抖音、小红书、亚马逊等国内外主流电商平台,可实现多店铺账号的安全分区管理,提供独立稳定的IP,有效解决账号关联风险。挖象浏览器内置丰富的电…

2025 年国内活性炭回收交易公司最新推荐排行榜:实力厂商深度解析,助力企业精准选合作方回收果壳活性炭/回收煤质柱状活性炭/库存各种活性炭公司推荐

当前活性炭行业应用广泛,从自来水处理到工业污水净化、食品加工脱色等领域均有涉及,市场规模持续扩大。但行业内厂商数量繁杂,部分厂商存在原料把控不严、生产工艺落后导致产品质量不稳定,还有些厂商技术团队薄弱,…

2025-10-15 CSP-J 模拟赛 赛后总结【ZROI】

孩子们,我开了文件读写然后全爆 0 了!!!!!T1 吃 吃了吧。题意 给 \(a\) 和 \(b\) 两个序列,选定一个子串,对于子串的任意一个位置,都可以选择 \(a_i\) 或 \(b_i\) 其一,选定的连续子串合法当且仅当存在一种选…

辐射检测仪哪家好?CT剂量模体哪家好?

在核辐射监测、放射医疗、环保检测等领域,辐射检测仪的精准性与可靠性直接关系到安全防护与检测效率。面对市场上众多品牌,如何选择合适的厂商?本文结合产品性能、企业实力、资质认证等维度,为您推荐三家优质厂商,…

【2025-10-14】玩玩植物

20:00对人之爱,其目的是帮助人们成为他们所能成为之人。——卡尔雅思贝尔斯周日,我跟何太商量好借带二宝去看医生这事,顺便去逛逛本地最大的花鸟鱼虫市场。确实,整个看医生过程也就不到半小时。剩下的,就是我们一…