c:
题意:给你一个字符串,让你统计有多少个o,一边还要带上-。
这题可以线性扫描一下,统计。
#include<bits/stdc++.h>
#define maxint 2147483647
#define llmax 9223372036854775807
#define ll long long
#define insert ins
#define pb push_back
#define all(v) v.begin(),v.end()
#define m() memset()
#define sz(s) (int)s.size()
#define str string
#define in read()
using namespace std;
int read(){
int x=0,f=1;
char c=getchar();
while(!isdigit(c)) {
if(c=='-') f=-1;
c=getchar();
}
while(isdigit(c)) {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
int main(){
int n;
n=in;
str s;
cin>>s;
int maxv,sum;
bool k=false;
maxv=0,sum=0;
for(int i=0;i<s.size();i++){
if(s[i]=='o'){
sum++;
}
if(s[i]=='-'){
if(sum>maxv){
maxv=sum;
k=true;
}
sum=0;
}
}
if(k){
cout<<maxv;
}
else{
cout<<-1;
}
}
d:
这题是一个交互题,你向电脑提问,然后电脑会返回你一个答案。
注意:一定要加回车!!
这题让200000中猜20次,很明显,是一个二分。
用mid向电脑发问。
参考代码:
#include<bits/stdc++.h>
#define maxint 2147483647
#define llmax 9223372036854775807
#define ll long long
#define insert ins
#define pb push_back
#define all(v) v.begin(),v.end()
#define m() memset()
#define sz(s) (int)s.size()
#define str string
#define in read()
using namespace std;
int read(){
int x=0,f=1;
char c=getchar();
while(!isdigit(c)){
if(c=='-') f=-1;
c=getchar();
}
while(isdigit(c)){
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
int main(){
int n;
n=in;
int l=1,r=n;
bool vl=0,vr=1;
while(l<=r){
if(r==l+1){
cout<<"! "<<l<<endl;
return 0;
}
int mid=(l+r)/ 2;
cout<<"? "<<mid<<endl;
int x;
cin>>x;
if(x!=vl){
r=mid;
vr=x;
}
if(x!=vr){
l=mid;
vl=x;
}
}
}