A Best Cow Fences
1.题意:
2.题解:
二分
3.ac代码:
#include<stdio.h>
#include<bits/stdc++.h>
#include<iostream>
#include<string.h>
#define N 100001
using namespace std;
int cows[N];
int f,n;
double sum[N];
bool check(double k){
double minv=0;
for(int i=1;i<=n;i++){
sum[i]=sum[i-1]+cows[i]-k;
}
for(int i=0,j=f;j<=n;j++,i++){
minv=min(minv,sum[i]);
if(sum[j]>=minv)
return true;
}
return false;
}
int main(){
cin>>n>>f;
double r=2000,l=0;
double mid;
double eps=1e-5;
for(int i=1;i<=n;i++) cin>>cows[i];
while(r-l>eps){
mid=(r+l)/2;
if(check(mid)) l=mid;
else r=mid;
}
cout<<int(r*1000)<<endl;
}
P3392 涂国旗
1.题意:
2.题解:
暴力+前缀和
3.ac代码:
#include<stdio.h>
#include<bits/stdc++.h>
#include<iostream>
#include<string.h>
#define N 100001
using namespace std;
int cows[N];
int m,n;
double sum[N];
int a[N],b[N],c[N];
char s[60];
int check(char c){
int tot=0;
for(int j=0;j<m;j++)
if(s[j]!=c)
tot++;
return tot;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>s;
a[i]=a[i-1]+check('W');
b[i]=b[i-1]+check('B');
c[i]=c[i-1]+check('R');
}
int ans=m*n;
for(int i=1;i<n-1;i++){
for(int j=i+1;j<n;j++)
ans=min(ans,a[i]+b[j]-b[i]+c[n]-c[j]);
}
cout<<ans<<endl;
}
P1308 [NOIP2011 普及组] 统计单词数
1.题意:
2.题解:
find()简直太犯规了!
全变小写nb
3.ac代码:
#include<stdio.h>
#include<bits/stdc++.h>
#include<iostream>
#include<string.h>
#define N 100001
#include<string>
using namespace std;
int main(){
string a,b;
getline(cin,a);
getline(cin,b);
for(int i=0;i<a.length();i++)
a[i]=tolower(a[i]);
for(int j=0;j<b.length();j++)
b[j]=tolower(b[j]);
a=' '+a+' ';
b=' '+b+' ';
if(b.find(a)==string::npos)
cout<<-1<<endl;
else{
int index=b.find(a);
int s=0,t=b.find(a);
while(t!=string::npos){
s++;
t=b.find(a,t+1);
}
cout<<s<<" "<<index<<endl;
}
}