CF58D Calendar 题解
CF58D Calendar 题解
题目描述
题目解法
暴力题。
我们发现输出的字符串中除了每一行最后一个串没有分割字符,其余的都有。
并且每一行只会有两个字符串。
我们可以在每个输入的字符串后面加上分割字符后再进行排序,这样可以保证字典序最小。
每次枚举一个字符串,找到第一个可以和他组成符合条件的字符串,然后将他们输出。
C++ 的 string
是基于 vector
的,加上分割字符的操作可以 push_back()
,输出时将第二个字符串 pop_back()
即可。
由于
记得将使用过的字符串清空。
Code
#include<bits/stdc++.h> using namespace std; #define maxn 10004 string m[maxn]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); char c; int n,s=0; cin>>n; for(int i=1;i<=n;i++) cin>>m[i]; cin>>c; for(int i=1;i<=n;i++) m[i].push_back(c), s+=m[i].size(); int lrc=s*2/n; sort(m+1, m+n+1); for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) if(m[i].size()+m[j].size()==lrc) cout<<m[i], m[j].pop_back(), cout<<m[j]<<'\n', m[i].clear(), m[j].clear(); }
本文作者:Jimmy-LEEE
本文链接:https://www.cnblogs.com/redacted-area/p/18379523
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步