Codeforces Round 734 (Div. 3) 题解

news/2025/1/12 17:28:33/文章来源:https://www.cnblogs.com/harmisyz/p/18667106

建议开题顺序:A,B1,B2,C,E,F,D1,D2。

A. Polycarp and Coins

\(k=\min(c1,c2)\),则 \((c1-k)\times 1 +(c2-k)\times 2+k\times 3=n\)。注意到 \(n \mod 3\)\(0,1,2\)。所以我们 \(|c1-c2|\) 最多为 \(1\),只需要将 \(n \mod 3\)\(1\)\(2\) 即可。

B1. Wonderful Coloring - 1

\(cnt_i\) 表示 \(s_j=i\) 的数量。那么当 \(cnt_i \ge 2\) 时,我们能在里面随便拿两个,一个染成红色,一个染成绿色。当 \(cnt_i=1\) 时,记一共有 \(x\) 个。那么我们将其中 \(\lfloor \frac{x}{2} \rfloor\) 个染成红色,另外 \(\lfloor \frac{x}{2} \rfloor\) 个染成绿色。很显然剩下的点只能不染色。模拟即可。

B2. Wonderful Coloring - 2

模仿 B1 的思路。当 \(cnt_i \ge k\) 时,选其中 \(k\) 个染成 \(k\) 种颜色。当 \(1\le cnt_i <k\) 时我们将总数记录出来,然后均匀地染色即可。时间复杂度 \(O(n)\)

代码

 
il void solve(){n=rd,k=rd;for(re int i=0;i<=n;++i) cnt[i]=0,v[i].clear();for(re int i=1;i<=n;++i) ans[i]=0,s[i]=rd,++cnt[s[i]],v[s[i]].push_back(i);int c1=0,c2=0;for(re int i=1;i<=n;++i)if(cnt[i]>=1&&cnt[i]<k){c1+=cnt[i];}for(re int i=n;i>=1;--i)if(cnt[i]>=1&&cnt[i]<k){if(c1%k!=0) c1-=min(cnt[i],(c1%k));}int U=1,c_=0;for(re int i=1;i<=n;++i)if(cnt[i]>=k){int cc=0;for(auto x:v[i]){ans[x]=++cc;if(cc==k) break;}}else{for(auto x:v[i]){if(c_>=c1) break;++c_,U++,U%=k;if(!U) U=k;ans[x]=U;}	}for(re int i=1;i<=n;++i) cout<<ans[i]<<" ";cout<<"\n";return ;
}

C. Interesting Story

\(f_{i,j}\) 为第 \(i\) 个字符串中 \(s_{k}=j\) 的数量与 \(s_k \ne j\) 的差。那么对于一个字符 \(x\),记我们选择的字符串下标为 \(p_1 \dots p_m\),则:\(\sum\limits_{i=1}^{m} f_{p_i,x} >0\)。暴力枚举最多的字符是哪个,则每次贪心地选 \(f_{i,j}\) 大的,只要和不小于 \(1\) 即可。

D1. Domino (easy version)

暴力分类讨论题。这里我们令 \(m\) 为偶数。如果读入的 \(m\) 为奇数,旋转矩阵即可。如果 \(k=0\),当 \(n\) 为偶数时有解(全构造竖的),否则无解。如果 \(k \ne 0\),我们考虑将前面的若干行填满(因为 \(m\) 为偶数,所以只要数量足够多就可以),记填满了 \(x\) 行,最后剩下 \(y\) 个。当 \(n-x\) 为偶数时,如果 \(y\) 也为偶数,则我们可以构造将 \(\frac{y}{2}\) 个放在第 \(x+1\) 行的前面,其它的放第 \(x+2\) 行的前面,就能保证每一列后面还没填的空为偶数个(每两个放一个竖的就行了);否则无解。当 \(n-x\) 为奇数时,此时我们将第 \(x\) 行的一半放下来,到第 \(x+1\) 行就能保住合法了;否则无解。这里需要注意我们 \(x\ge 1\)

然后就判断完了。

D2. Domino (hard version)

将 D1 的所有合法情况分别构造即可,但是有点麻烦。

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

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

相关文章

JAVA之集合

1、集合集合可以存储引用数据类型; 集合不可以存储基本数据类型,若要存储,需封装成包装类;2、集合和数组的对比长度【数组长度固定,集合长度可变】 存储类型【数组可以存基本数据类型和引用数据类型,集合可以存引用数据类型,若存储基本数据类型,需封装成包装类】3、Arr…

[题目记录]P9999 [Ynoi2000] tmostnrq

当前自己写过了码量第二大的题目 , 不管怎么说对拍非常重要 .P9999 [Ynoi2000] tmostnrq 题意 给定 \(n\) 个顶点的树,顶点编号为 \(1,\dots,n\),给定长度 \(n_0\) 的序列 \(a_1,\dots,a_{n_0}\),共 \(m\) 次查询,每次查询给定 \(l,r,x\),问树的顶点 \(x\),依次向 \(a_l,…

多光谱火焰智能监测摄像机

多光谱火焰智能监测摄像机将在未来继续发展。未来的摄像机可能会更加智能化,具备更强的自主识别和决策能力,进一步提升火灾监测的灵敏度和准确性。此外,随着物联网的发展,这些摄像机还有望与其他设备和系统实现更深入的数据共享和集成应用,为整个安全监控体系增添新的可能…

明火智能监测摄像机

明火智能监测摄像机检测到火源时,它会立即触发报警机制,以警告人员采取适当的行动。它可以与各种报警系统集成,发出清晰可闻的警报声,并通过网络将警报信息发送到相关部门或人员的手机应用程序,确保快速响应。明火智能监测摄像机全天候工作,不间断地监测环境中的火情。它…

山体滑坡自动监测识别摄像机

山体滑坡自动监测识别摄像机系统通过技术创新和智能化应用,为减少自然灾害带来的损失和风险提供了重要的技术手段和支持。随着技术的进步和系统的完善,相信这类系统将在全球范围内得到广泛应用,为社会公共安全和环境保护作出更大贡献。对于现代社会而言,山体滑坡作为自然灾…

水位智能监测识别摄像机

水位智能监测识别摄像机的应用前景十分广阔。未来,这些摄像机有望进一步提升监测精度和反应速度,扩展到更多复杂的水域环境和特殊应用场景中,为保障社会公共安全和生态环境做出更大贡献。总之,水位智能监测识别摄像机以其先进的技术和多功能性能,正在成为水域监测领域的重…

1.12 CW 模拟赛 T1. 括号序列

思路 根据赛时的检验, 典型的动点问题的 \(\rm{trick}\) 并不能在这里使用, 也就是说, 分类讨论前缀 + \(i\) + 后缀 前缀 + \(i\) 后缀 + \(i\)是不可行的 考虑括号串问题的常见做法, 先将其赋值成 \(1, -1\) 之后进行处理 你发现这种做法有枚举字段和的瓶颈, 所以也不可行 当…

【Docker】Docker搭建一款开源的RAG聊天应用

项目介绍 Kotaemon是一个由Cinnamon开发的开源项目,旨在提供一个基于检索增强生成(RAG)技术的用户界面,使用户能够与自己的文档进行交互问答。 功能特点 文档问答:Kotaemon允许用户通过自然语言查询与文档进行交互,快速获取所需信息。这一功能在学术研究、企业文档管理等…

客梯自动监测识别摄像机

客梯自动监测识别摄像机通过技术创新和智能化应用,为现代城市客梯的安全管理提供了全新的解决方案。随着技术的不断进步和应用场景的扩展,相信这类系统将在全球范围内得到广泛应用,为乘客的安全出行和客梯运行的高效管理提供更加可靠的保障和支持。当今社会,随着城市建设的…

【Docker】Docker搭建一款开源的加密货币量化交易平台

项目介绍 Freqtrade是一个开源的加密货币量化交易平台,它允许用户通过编写和配置交易策略来自动化交易过程。 功能特点 开源性:Freqtrade的代码是开源的,这意味着用户可以查看、修改和扩展平台的功能。 自动化交易:通过配置交易策略,Freqtrade可以自动执行买卖操作,无需人…

高级数据结构与算法---莫队

这篇文章主要是用来复习的,最近学了一些新的东西,多少要记录一下,不然以后忘了,不过似乎树状数组和ST表还没有补完,等后面有时间(不能拖拉)再去将他们给写完,然后就开始去学习一下计算几何,树形DP以及图论,啊啊啊啊啊啊,还要准备数学建模,哎,为什么明明都放假了,…

AT_abc388_f Dangerous Sugoroku 题解

太幽默了。 显然可以用矩阵快速幂解决,矩阵里维护距离当前点 \(B\) 以内的所有点可不可达,转移只需分段,在区间内和不在区间内用不同的转移矩阵即可。复杂度 \(O(B^3m\log n)\)。 然后你就 T 了。 此时你很急,你现在应该快点卡常来 AK 这场比赛而不是研究其他的做法,于是我…