A
int main()
{
cout<<"Good Luck Zuter"<<endl;
return 0;
}
B
int main()
{
string s;
while(cin>>s)
{
if(s=="me") cout<<"you"<<" ";
else if(s=="?") cout<<"!";
else cout<<s<<" ";
}
return 0;
}
C 两个奇数相加为偶数,两个偶数相加为偶数
int main()
{
ios::sync_with_stdio(false);
int n,x;
cin>>n;
ll ans=-1;
for(int i=1;i<=n;i++) {
cin>>x;
if(x&1) a[ia++]=x;
else b[ib++]=x;
}
if(ia<2&&ib<2){
cout<<-1<<endl;
return 0;
}
if(ia>1){
sort(a,a+ia);
ans=max(a[ia-1]+a[ia-2],ans);
}
if(ib>1){
sort(b,b+ib);
ans=max(b[ib-1]+a[ib-2],ans);
}
cout<<ans<<endl;
return 0;
}
D 正数平均越来越小,负数平均越来越大
int main()
{
ios::sync_with_stdio(false);
ll sumz=0,nz=0,sumf=0;
ll n,x;
double ans=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>x;
if(x>=0){
sumz+=x;
nz++;
}
else if(x<0){
sumf+=x;
}
}
ans=sumf;
if(nz>0)
{
ans=sumf+1.0*sumz/nz;
}
printf("%.2lf",ans);
return 0;
}
E
int main()
{
ios::sync_with_stdio(false);
int n,m,idx=1;
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++) cin>>b[i];
int i=1,j=1;
for(;i<=n&&j<=m;)
{
if(a[i]<b[j])
{
c[idx]=a[i];
a[i++]=idx++;
}
else
{
c[idx]=b[j];
b[j++]=idx++;
}
}
while(i<=n)
{
c[idx]=a[i];
a[i++]=idx++;
}
while(j<=m)
{
c[idx]=b[j];
b[j++]=idx++;
}
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
for(int i=1;i<=m;i++) cout<<b[i]<<" ";
cout<<endl;
return 0;
}
F注意base串为无限环绕的字符串
int main()
{
ios::sync_with_stdio(false);
string s;
cin>>s;
int n=s.length();
ll ans=0;
for(int i=0;i<n;i++)
{
int j=i+1;
while((s[j]-s[j-1]==1||(s[j]=='a'&&s[j-1]=='z'))&&j<n) j++;
ans+=j-i;
}
cout<<ans<<endl;
return 0;
}
G 单纯相乘计算的话会超出数据范围,所以我们计算2的出现次数
int main()
{
int n;
cin>>n;
a[0]=0;
for(int i=1; i<=n; i++)
{
cin>>a[i];
b[i]+=b[i-1];
if(a[i]==2) b[i]++;
}
for(int i=n;i>0;i--)
{
c[i]=c[i+1];
if(a[i+1]==2)
c[i]++;
}
for(int i=1; i<=n; i++)
{
if(b[i]==c[i])
{
cout<<i<<endl;
return 0;
}
}
cout<<-1<<endl;
return 0;
}
H
不会
I前缀和求最大值
int main()
{
int n;
cin>>n;
int ma=0;
int ans=0;
while(n--)
{
int x,y;
cin>>x>>y;
a[x]++;
a[y+1]--;
ma=max(ma,y);
}
for(int i=0;i<=ma;i++)
{
a[i]+=a[i-1];
ans=max(ans,a[i]);
}
cout<<ans<<endl;
return 0;
}
J感觉是贪心
int main()
{
int n,k,ma=0;
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>a[i];
ma=max(ma,a[i]);//计算出现的最大值,最后遍历时遍历到这+1就够了
}
sort(a,a+n);//排下序,越大的数可选择的余地越多
for(int i=0;i<n;i++)
{//寻找这个数最小且未被标记的非负整数
int x;
x=a[i]%k;
while(b[x]&&x<a[i]) x+=k;
b[x]=true;
}
for(int i=0;i<=ma+1;i++)//寻找最小的未被标记的非负整数
{
if(!b[i])
{
cout<<i<<endl;
return 0;
}
}
return 0;
}