ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Codeforces Round 1073 Div1 + Div2 部分题目题解

Codeforces Round 1073 Div1 + Div2 部分题目题解

比赛传送门:Codeforces Round 1073。

打的 Div2。AB 赛时切了。

C 题解

\(s\) 升序排序后为 \(t\),那么如果 \(s=t\) 显然 Bob 胜利,否则我们断言 Alice 一定胜利。

如果 Alice 可以一步将 \(s\) 变成 \(t\),那么他就赢了,而我们发现如果 Alice 操作 \(s\)\(t\) 不相等那部分,显然可以将其排序,做完了。

#include<bits/stdc++.h>
#define int long long
#define double long double
using namespace std;
inline int read(){char c=getchar();int f=1,ans=0;while(c<48||c>57) f=(c==45?f=-1:1),c=getchar();while(c>=48&&c<=57) ans=(ans<<1)+(ans<<3)+(c^48),c=getchar();return ans*f;
}
inline void solve(){int n=read();string s,t;cin>>s;t=s;sort(t.begin(),t.end());if (s==t){puts("Bob");return ;}puts("Alice");vector<int>anss;for (int i=0;i<n;i++) if (s[i]!=t[i]) anss.push_back(i);printf("%lld\n",(int)anss.size());for (auto i:anss) printf("%lld ",i+1);puts("");
}
main(){int T=read();while(T--) solve(); return 0;
}
返回列表