B. RGB Caps
有 个学生排成一排,每个人戴着红、绿、蓝三种不同的帽子。从队列的开头开始分别给这些学生编号为 。
给你 条证词。第 条证词如下:
- 从第 个人到第 个人中戴的帽子中出现最多的颜色之一是
其中 表示 R
、G
或 B
,分别表示红、绿和蓝。当 时, 。
要求构造一种合法的戴帽子方式。若有证词存在矛盾则输出 -1
。
限制:
算法分析
由于“当 时, ”,所以不需要考虑矛盾的情况
可以考虑像 RGBRGB...
这样均匀地分配
具体地,我们可以将 初始化成 个 R
拼接起来的字符串,然后将 的第 个字符更改为
接下来我们遍历 的每个字符:
- 当 时, 保持不变
- 当 时,若此时还满足 ,如果
R
,则将 更改成G
;若R
,则将 更改成R
- 当 时,将 更改成和 , 都不同的颜色即可
代码实现
#include <bits/extc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using std::cin; using std::cout; using std::string; int main() { int n, k; cin >> n >> k; string s(n, 'R'); rep(i, k) { int p; char c; cin >> p >> c; --p; s[p] = c; } rep(i, n) { if (i%3 == 1) { if (s[i] == s[i-1]) { if (s[i-1] == 'R') s[i] = 'G'; else s[i] = 'R'; } } if (i%3 == 2) { s[i] = 'R' ^ 'G' ^ 'B' ^ s[i-1] ^ s[i-2]; } } cout << s << '\n'; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现