社区讨论
求助,玄关,拜谢(40pts)
P3718[AHOI2017初中组] alter参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lyqn1fzz
- 此快照首次捕获于
- 2024/07/18 10:14 2 年前
- 此快照最后确认于
- 2024/07/18 11:01 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
inline long long read();//kuai du
bool check(int k,int n);//mid=1
bool cmp(int x,int y);//sort sheng xu
int on[100005],off[100005];
int main()
{
int n,k;
n=read();
k=read();
string p;
// int cnt=0;
cin>>p;
if(check(k,n))
{
cout<<1;
return 0;
}
int mid=1;
int cnt=1;
char o;
for(int i=1;i<=n;i++)
{
if(o!=p[i])
{
cnt++;
}
if(p[i]=='N')
{
on[cnt]++;
}
if(p[i]=='F')
{
off[cnt]++;
}
o=p[i];
}
sort(on+1,on+cnt+1,cmp);
sort(off+1,off+cnt+1,cmp);
int num=0;
for(int i=0;i<=n;i++)
{
if(on[i]>0)
{
num++;
}
if(off[i]>0)
{
num++;
}
}
// cout<<num;
for(int i=1;i<=n;i++)
{
if(num/mid>k)
{
mid++;
}
else
{
cout<<mid;
return 0;
}
}
return 0;
}
bool check(int k,int n)
{
string p;
int cnt=0;
for(int i=1;i<=n;i++)
{
if(p[i]!=p[i-1])
{
cnt=cnt;
}
else
{
cnt++;
}
}
if(cnt<=k)
{
return 1;
}
else
{
return 0;
}
}
inline long long read()
{
char cc=getchar();
long long f=1;
long long ans=0;
while(cc<'0' or cc>'9')
{
if(cc=='-')
{
f=-1;
}
cc=getchar();
}
while(cc>='0' and cc<='9')
{
ans=(ans*10)+(cc-'0');
cc=getchar();
}
return f*ans;
}
bool cmp(int x,int y)
{
return x>y;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...