三道简单贪心
小紫的劣势博弈
题目链接:
B-小紫的劣势博弈_牛客周赛 Round 85
思路:
都很聪明,先给数组排个序。那么就从最小的开始依次小红加,小紫减。得到答案。
代码:
cpp
const int N=1e5+5;
int a[N];
void solve()
{
int n;
cin>>n;
int x=0;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int t=1;
for(int i=1;i<=n;i++){
x+=t*a[i];
t*=-1;
}
cout<<x;
}
U535982 C-小梦的AB交换
题目链接:
U535982 C-小梦的AB交换 - 洛谷
思路:
两种对比以 A 开头和以 B 开头的取最小值。
代码:
cpp
const int N=1e5+5;
int a[N];
void solve()
{
int n;
cin>>n;
string s;
cin>>s;
int ans=0;
int cntA=0,cntB=0;
for(int i=0;i<2*n;i++){
if(i%2==0)
{
if(s[i]=='B')cntA++;
}else{
if(s[i]=='A')cntB++;
}
}
ans=abs(cntA-cntB)+min(cntA,cntB);
cntA=0,cntB=0;
for(int i=0;i<2*n;i++){
if(i%2==0)
{
if(s[i]=='A')cntA++;
}else{
if(s[i]=='B')cntB++;
}
}
int m=abs(cntA-cntB)+min(cntA,cntB);;
ans=min(ans,m);
cout<<ans<<endl;
}
小苯的Z串匹配
题目链接:
C-小苯的Z串匹配_牛客周赛 Round 87
思路:
按要求操作,需要修改时直接改成 1 或-1,遇到 Z 只有异号或等于 0 才需要改。
代码:
cpp
void solve()
{
int n;
cin>>n;
vector<int> a(n);
for(int i=0;i<n;i++){
cin>>a[i];
}
string s;
cin>>s;
int cnt=0;
for(int i=0;i<n;i++){
if(s[i]=='<'&&a[i]>=0)
{
a[i]=-1;
cnt++;
}
else if(s[i]=='>'&&a[i]<=0)
{
a[i]=1;
cnt++;
}
else if(s[i]=='Z'&&a[i-1]*a[i]<=0){
cnt++;
a[i]=a[i-1];
}
}
cout<<cnt<<endl;
}