专栏文章
题解:B4371 [GXPC-S 2025] 序列 / sequence
B4371题解参与者 2已保存评论 6
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @miop98cl
- 此快照首次捕获于
- 2025/12/02 22:55 3 个月前
- 此快照最后确认于
- 2025/12/02 22:55 3 个月前
题意
让一个序列中包含 个 与 个 ,使得/这个序列的每个子序列中/ 与 的数量的差/的最大值/为 (多么精妙的断句)。记住,要输出字典序最小的。如果你是因为没看懂题意来看题解的话,请在评论区发一个
1 再回去写,也可以点个赞。思路
这里要输出字典序最小的,于是我们很容易想到,尽量放 ,如果实在放不了了再放 。
那么什么时候是放不了的呢?第一种是没有 了,我们可以每放一个 , 就减一,如果 等于 就放不了了。第二种我们可以用 记录下当前最大的 (题目里这样叫的,见题目描述第二段开头),如果 小于 (这个是输入时的 ,见输入格式),那么就可以放进去一个 , 也要加一。
其他具体细节见代码,这里不再赘述。
那么什么时候是放不了的呢?第一种是没有 了,我们可以每放一个 , 就减一,如果 等于 就放不了了。第二种我们可以用 记录下当前最大的 (题目里这样叫的,见题目描述第二段开头),如果 小于 (这个是输入时的 ,见输入格式),那么就可以放进去一个 , 也要加一。
其他具体细节见代码,这里不再赘述。
代码
CPP#include <bits/stdc++.h>
#define code using
#define from namespace
#define Yxa_Sheep std
code from Yxa_Sheep;
int n, m, k, x;
string ans;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
cin >> n >> m >> k;
while (n || m)
{
if (m && x < k)
ans += '0', x++, m--;
else
ans += '1', x--, n--;
}
cout << ans;
return 0;
}
题解来之不易,且看且珍惜。给个赞再走吧。
相关推荐
评论
共 6 条评论,欢迎与作者交流。
正在加载评论...