题目
比赛首页 > A 小红称体重(A组,B组) > 72874887
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a;
cin>>n>>a;
vector<int>b(n);
int cnt=0;
for(int i=0;i<n;i++)
cin>>b[i];
for(int i=1;i<n;i++)
{
if(b[i]>=a&&b[i-1]<a)
cnt++;
}
cout<<cnt<<endl;
return 0;
}
题目
比赛首页 > B 小红的回文子串(B组) > 73007829
思路
寻找有无相差3个字符且相等的情况(即s[i]==s[i+4]),如果有,在原有基础上+2,如果没有, 在原有基础上+1。(前提,增加后不能超过最大)
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
int flag=0;
for(int i=0;i<s.size();i++)
{
if(s[i]==s[i+4])
{
flag=1;
break;
}
}
int cnt=0;
for(int i=0;i<s.size()-2;i++)
{
if(s[i]==s[i+2])
cnt++;
}
if(flag==1)
{
if(cnt+2<=s.size()-2)
cout<<cnt+2<<endl;
else
cout<<cnt<<endl;
}
else
{
if(cnt+1<=s.size()-2)
cout<<cnt+1<<endl;
else
cout<<cnt<<endl;
}
return 0;
}
题目
比赛首页 > C 小红的字母游戏(A组) > 73019607
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
int n,k;
cin>>n>>k;
string s;
cin>>s;
map<char,int>mp;
for(int i=0;i<s.size();i++)
{
mp[s[i]]++;
}
vector<int>a;
for(auto i:mp)
{
a.push_back(i.second);
}
sort(a.begin(),a.end(),greater<int>());
int cnt=0;
for(int i=0;i<n;i++)
{
if(k>=a[i])
{
cnt+=a[i]*a[i];
k-=a[i];
}
else
{
cnt+=k*k;
break;
}
}
cout<<cnt<<endl;
return 0;
}
注意开long long!
题目
比赛首页 > D 小红的质数数组(A组,B组) > 73009305
思路
无需暴力,小技巧:寻找奇奇或偶偶对即可,找到一个后i+=3注意理解 。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int>a(n);
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int flag,cnt=0;
for(int i=0;i<n-1;i++)
{
if(a[i]%2==0&&a[i+1]%2==0||a[i]%2!=0&&a[i+1]%2!=0)
{
flag=i;
cnt++;
i+=3;
}
}
if(cnt!=1)
cout<<-1<<endl;
else
cout<<flag+2<<endl;
return 0;
}