题解:P9187 [USACO23OPEN] Field Day S

news/2025/11/25 17:33:35/文章来源:https://www.cnblogs.com/StarLink/p/19269326

全世界都在研究怎么赢,只有我在大输特输。

如此状态,如何 NOIP?

题面简述

link

给出 \(N\) 个长为 \(C\) 的字符串,每个字符串由 GH 组成,对于每一个字符串,求出它和其它字符串同一位置字符不同的最大值。

解题思路

注意到 \(C\) 仅有 18,我们可以把字符转换成二进制数字,此时问题转化为:求 \(\max_{j = 1}^{n} \text{popcount}(a_i \oplus a_j)\)。其中 \(\text{popcount}\) 为数字在二进制下的位数。

考虑如何求解。我们知道 \(a_i\) 按位取反之后有当前答案最大,为了方便我们设 \(a_i\) 取反后的数为 \(b_i\),如果知道在剩下的数字当中和 \(b_i\) 不同的位数最小的数字为 \(a_j\),此时有 \(C - \text{popcount}(a_j \oplus b_i) = \max_{k = 1}^{n} \text{popcount}(a_i \oplus a_k)\)\(\text{popcount}(a_j \oplus b_i)\) 翻译成人话就是 \(a_j\)\(b_i\) 在二进制下同一位置数字不同的数量。

这其实很好理解,因为每一位只有两种情况,我们又知道 \(a_i\)\(b_i\) 的每一位都不同,此时我们知道有一个 \(a_j\)\(b_i\) 在二进制下共有 \(x\) 位不相同,那么就有 \(a_i\)\(a_j\)\(x\) 位相同,即 \(a_i\)\(a_j\)\(C - x\) 位不同。

现在我们要知道 \(\text{popcount}(a_j \oplus b_i)\) 该怎么做?首先枚举每个 \(a_j\) 肯定不行,但是由于 \(C\) 比较小,也许可以一位一位的考虑。

对于每一个 \(a_i\),我们改变它二进制下某一位上的数字,会得到一个新的数字,再用新的数字重复这个操作,在第 \(x\) 次操作后 \(a_i\) 就会变成 \(b_j\),这个操作数 \(x\) 即为 \(\text{popcount}(a_i \oplus b_j)\),也是 \(b_j\) 变成 \(a_i\) 的最小操作次数。
我们对每一个数都这样做,发现这就是一个 bfs 的过程。这样就可以得到从 \(0\)\(2^C - 1\) 之间的每一个数变成已有数字的最小操作次数,现在我们只需要枚举一遍所有 \(b_i\) 就能求出答案了。

我写还是比较详细的(也许有些啰嗦?)但是可能还是有些抽象,还有不懂的话可以结合代码理解。

代码

#include <bits/stdc++.h>
using namespace std;const int MN = 1e5 + 3;
int C, n;
int a[MN], rec[1 << 18];queue<pair<int, int> > q;int main() {ios::sync_with_stdio(0);cin.tie(0);cin >> C >> n;memset(rec, -1, sizeof(rec));for (int i = 1; i <= n; i++) {for (int j = 1; j <= C; j++) {char c;cin >> c;a[i] = (a[i] << 1) + (c == 'G' ? 0 : 1);}rec[a[i]] = 0;q.push({a[i], 0});}while (!q.empty()) {auto [x, cnt] = q.front();q.pop();for (int i = 0; i < C; i++) {int y = x ^ (1 << i);if (rec[y] < 0) q.push({y, rec[y] = cnt + 1});}}for (int i = 1; i <= n; i++)cout << C - rec[(1 << C) - 1 - a[i]] << "\n";return 0;
}

念念碎

本次模拟赛又双叒叕大 bear 归,非常的心痛,故作此文缓解一下。

你知道的,我没有那么聪明,所以本篇文章是在学习这篇题解后写的,拜谢大佬。

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

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

相关文章

【IEEE和ACM双出版 | 连续4届稳定EI检索 | 会议录用率高】第五届计算建模、仿真与数据分析国际学术会议(CMSDA 2025)

由中国石油大学主办,中国民航大学作为支持单位的第五届计算建模、仿真与数据分析国际学术会议(CMSDA 2025)将于2025年12月12-14日即将在中国青岛召开。【连续4届稳定EI检索】 【CMSDA已上线IEEE官网,ISBN号:(ISBN:…

c++ 3

##task 1 #代码1 #pragma once2 3 #include <iostream>4 #include <string>5 6 class Button {7 public:8 Button(const std::string &label_);9 const std::string& get_label() const; …

【2025-11-24】又到周末

20:00普通人的毛病在责人太严,责己太宽。埋怨环境还由于缺乏自省自责的习惯。自己的责任必须自己担当起,成功是我的成功,失败也是我的失败。每个人是他自己的造化主,环境不足畏,犹如命运不足信。——朱光潜这个周…

2025年广告边框铝型材制造厂权威推荐榜单:葡萄架铝合金型材/门窗铝合金型材/工业铝型材源头厂家精选

在广告标识行业持续升级和市场要求日益严格的背景下,广告边框铝型材作为各类广告展示载体不可或缺的组成部分,其市场需求稳步增长,品质要求不断提高。 广告边框铝型材作为一种关键的广告标识材料,在户外广告、展览…

ECCV 2024!面向领域泛化分割的文本查询驱动掩码Transformer| 语义分割 | 计算机视觉

ECCV 2024!面向领域泛化分割的文本查询驱动掩码Transformer| 语义分割 | 计算机视觉01 论文概述 论文名称:Textual query-driven mask transformer for domain generalized segmentation —— 面向领域泛化分割的文本…

刘二大人PyTorch深度学习实践第二讲笔记

碎碎念: 开个新坑,系统学一遍深度学习好做毕设,能到河工大挺激动的,赶紧给刘二大人投自荐简历,但是已读不回,还是自己太菜了........不过已经到河工大了挺好的,梦校 第二讲 线性模型可能x(输入)到y(答案)是…

最新榜单出炉!2025年成都必吃火锅排行榜,美食/烧菜火锅/特色美食/火锅/社区火锅成都火锅品牌口碑推荐榜

成都火锅市场格局深度解析 作为享誉全国的美食之都,成都火锅市场始终保持着旺盛的生命力与创新活力。据最新市场调研数据显示,成都火锅行业已形成多元化发展格局,其中以特色烧菜火锅为代表的新兴品类表现尤为突出。…

C# 多线程(学习笔记13)

1.进程与线程 进程是资源管理的最小单位,有自己的内存空间,一个进程可以有多个线程,各线程之间共享进程的系统资源。 多线程的意义在于多任务的并发执行。多线程对于自动化领域意义重大,例如一个线程去访问硬件设备…

【SPIE出版 | 连续四届均实现EI SCOPUS双检索 | 最快会后3个月检索】第五届计算机、信息工程与电子材料国际学术会议(CTIEEM 2025)

第五届计算机、信息工程与电子材料国际学术会议(CTIEEM 2025)将于2025年12月12日至14日在中国哈尔滨市举行。【连续四届均实现EI & SCOPUS双检索,最快会后3个月检索!】 【哈尔滨信息工程学院主办,12月与您相聚…

(让 Java IA MCP 更简单 )Solon AI v3.7.2 发布

Solon AI & MCP 是 Java 智能体开发框架,支持 Java 8-25,提供统一接口集成主流 AI 模型。框架支持聊天模型、生成模型、RAG 知识库、MCP 协议等多种 AI 能力,并提供与 Spring 等框架的兼容性。技术预览展示了简…

Unity 使用Blit生成图片踩的坑

p { line-height: 2; font-size: 18px } 引言在项目中经常需要把shader处理过的纹理保存成图片,如果直接获取材质的源纹理并保存,保存的是未经shader处理的原始纹理。有一种方法是使用Unity中的Blit函数读出经shader…

P14568 【MX-S12-T3】排列

目前只会 \(70pts\)。 考虑设 \(f_{i, j, k}\) 表示填到第 \(i\) 个数,最小值为 \(j\),最大值为 \(k\) 的方案数是多少,然后如果 \(op = 2, 3\) 可以直接转移,\(op = 0, 1\) 是不是还得数据结构辅助一下做到 \(O(n…

2025年辊压磨批发厂家权威推荐榜单:超细环辊磨/环辊磨粉机/辊压磨设备源头厂家精选

辊压磨作为粉体工程中的关键设备,其技术水平与可靠性直接关系到粉体加工的细度、效率与成品质量。以下将基于企业实力、产品特性、技术参数及行业应用等客观维度,为您梳理四家在辊压磨领域具有代表性的生产企业,为行…

SQL分区裁剪 - --

https://help.aliyun.com/zh/maxcompute/use-cases/check-whether-partition-pruning-is-effective?spm=a2c4g.11186623.0.0.290e1eddWQiIZE#concept-vjf-sxd-5db

2025 防水型压力传感器十大品牌推荐:硬核防护,赋能多元场景

2025 年,全球压力传感器市场规模已攀升至 122.6 亿美元,中国市场以 154.6 亿元规模增速领先全球。在工业自动化、海洋经济、新能源等领域的刚性需求驱动下,防水型压力传感器作为核心感知元件,其防水等级、测量精度…

2025年防爆仪表箱品牌权威推荐榜单:防爆接线箱/防爆控制箱/防爆正压柜源头厂家精选

防爆仪表箱作为石油、化工、燃气等易燃易爆场所的关键电气设备,其安全性能与质量直接关系到工业生产安全。本文将基于企业实力、产品特性、资质认证及行业应用等客观维度,为您梳理防爆仪表箱领域的代表性品牌,为行业…

2025年温度监控系统直销厂家权威推荐榜单:炉温仪‌/测厚仪‌/炉温测试仪‌源头厂家精选

在SMT贴片、回流焊、波峰焊等电子制造工艺中,一套精准的温度监控系统能将产品良率提升5%-10%,成为保障产品质量的关键环节。 在工业自动化与智能化制造快速发展的今天,温度监控系统已成为电子制造、科研实验等领域不…

2025年包头钢材/无缝钢管/螺纹管/型材/钢板行业场实力厂家盘点:优质源头厂家精选指南

摘要 随着包头钢铁产业的持续发展,2025年包头型材市场呈现出蓬勃发展的态势。本文基于市场调研和用户反馈,整理出五家值得推荐的包头型材源头厂家,排名不分先后,仅供参考。特别说明:本文推荐的企业均经过多方考察…

2025 最新太原山西菜馆推荐!权威测评认证的山西菜馆排行榜,探寻非遗传承与地道风味的匠心之选

引言 作为北方菜系的璀璨明珠,传统风味菜肴承载着数千年饮食文化精髓,以醇厚口感与精湛技法享誉业界。然而行业乱象频发:预制菜品泛滥导致风味失真,部分门店定价虚高,非遗技艺传承断层,食材溯源体系缺失等问题,…

connect()前两个参数是什么?

connect() 是 react-redux 中用于把 React 组件和 Redux store 连接起来的高阶函数,它一共可以接收 4 个参数,但最常用的是前两个 connect(mapStateToProps, mapDispatchToProps) 下面解释这两个参数分别干什么: 1.…