Codeforces Round 866 (Div. 2)(A~C)
1.Codeforces Round 866 (Div. 2)(A~C)
2.Codeforces Round 867 (Div. 3)(A~D)3.Codeforces Round 869 (Div. 2) A-CA. Yura's New Name
题意
在字符串
思路
- 当字符串头部为 "_" 时,一定要在前面添加1个字符 "^"
- 当字符串尾部为 "_" 时,一定要在后面添加1个字符 "^"
- 当字符串中出现连续两个"_"时,要在它们之间添加一个"^"
- 注意当
为 "^" 时,再添加1个字符"^"即可
代码
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int main()
{
int T;
cin>>T;
while(T--)
{
string s;
cin>>s;
int cnt=0;
if(s=="^")//特殊情况
{
cout<<1<<endl;
continue;
}
if(s[0]=='_')cnt++;
if(s[s.size()-1]=='_')cnt++;
for(int i=0;i<s.size()-1;i++)
{
if(s[i]=='_'&&s[i+1]=='_')cnt++;
}
cout<<cnt<<endl;
}
return 0;
}
B. JoJo's Incredible Adventures
题意
给定一个长度为
-
比如长度为
的字符串 ,循环右移 次,可得到如下的矩阵:1 0 1 1 1 0 0 1 1
思路
- 显然,当字符串中只含有
时,答案为 ;只含有 时,答案为 。 - 将字符串拼接到原字符串后面,统计最长的连续
的个数。假设最长的连续 的个数为 ,则矩阵的最大面积为- 给出证明:如果存在
的矩阵,通过观察可得,当字符串右移时,矩形长方向上出现 1 的次数减1,但是宽方向上加1,即满足关系式
- 给出证明:如果存在
1111 11111 111111
1111 11111 111111
1111 11111 111111
1111 11111 111111
11111 111111
111111
若要使
由此得证
代码
#include<bits/stdc++.h>
using namespace std;
const int N=110;
typedef long long ll;
int main()
{
int T;
cin>>T;
while(T--)
{
string s;
cin>>s;
int n=s.size();
if(s.find('0')==-1)//只有1
{
cout<<(ll)n*n<<endl;
continue;
}
s+=s;//成环
ll maxv=0;
//求连续1的最长个数
for(int i=0;i<s.size();i++)
{
if(s[i]=='0')continue;
int j=i;
while(j<s.size()&&s[j]=='1')j++;
maxv=max(maxv,(ll)j-i);
i=j-1;
}
cout<<(maxv+1)*(maxv+1)/4<<endl;
}
return 0;
}
C. Constructive Problem
题意
给定
思路
分类讨论
- 若数组中有
存在,则一定要将 最早出现和最晚出现之间的数修改为 ,之后判断 是否比原来增加 即可 - 若数组中不存在
- 若其他元素有重复,选择
个改为 即可 - 若其他元素无重复,
- 若有元素大于
,则将该元素改为 即可 - 若所有元素小于
,则答案为
- 若有元素大于
- 若其他元素有重复,选择
代码
#include<bits/stdc++.h>
using namespace std;
const int N=110;
typedef long long ll;
int main()
{
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
vector<int>a(n);
map<int,int>mp;
for(int i=0;i<n;i++)
{
cin>>a[i];
mp[a[i]]++;
}
int mex;
for(int i=0;;i++)
if(!mp.count(i))
{
mex=i;
break;
}
bool flag=false;
if(!mp.count(mex+1))
{
for(int i=0;i<n;i++)
if(mp[a[i]]>1||a[i]>mex)
{
flag=true;
break;
}
}
else{
int start,ed;
bool first=false;
for(int i=0;i<n;i++)
{
if(a[i]==mex+1)
{
if(!first)first=true,start=i;
ed=i;
}
}
for(int i=start;i<=ed;i++)
{
mp[a[i]]--;
mp[mex]++;
}
flag=true;
for(int i=0;i<mex;i++)
if(!mp[i])
{
flag=false;
break;
}
}
puts(flag?"Yes":"No");
}
return 0;
}
本文来自博客园,作者:风雨zzm,转载请注明原文链接:https://www.cnblogs.com/zzmxj/p/17346301.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧