【发布时间】:2017-12-02 18:30:06
【问题描述】:
给定大小为 n 的二进制字符串,有两种类型的查询
1.D为输入字符串D显示连续1的最长子数组长度
2.C X 用于输入字符串 C 和整数 x 如果为零,则将字符串位置 x 更改为 1
我的尝试
int main(){
int n,k,i,j,y,count=0;
string s,x;
int maxcount=0;
cin>>n>>k;
cin>>s;
for(j=0;j<k;j++)
{
cin>>x;
if(x=='D')
{
maxcount=0;
for(i=0;i<n;i++)
{
if(s[i]=='1')
{
count++;
} else{
maxcount = max(maxcount,count);
count=0;
}
}
maxcount = max(maxcount,count);
cout<<maxcount<<endl;
} else{
cin>>x;
s[x-1] = '1';
}
}
return 0;
}
我认为可以使用离线查询来完成,任何人都可以提出方法或解决方案
【问题讨论】:
-
你有一些看起来非常 O(N^2) 的东西。比赛通常希望您知道或寻找将时间复杂度降低到更易于管理的“技巧”
-
@user4581301 你能建议我的方法吗
-
这样做有什么意义?然后我赢得了比赛,而不是你。
-
@user4581301 你觉得哪场比赛不是来自比赛兄弟
-
那你的编译器坏了:ideone.com/Q0YajF