CFR-832-Div-2解题报告
B. BAN BAN
题意:给你一个
,生成一个字符串为 BAN
重复遍。每次操作可以选择两个位置进行交换,问至少多少次交换后可以使该串不存在 BAN
的子序列。输出方案。
显然对于每个 BAN
都至少要动一下,而每次交换可以动两位,所以答案的下界是 B
和最右边的 N
,再交换第二段的 B
和倒数第二段的 N
,以此类推,结果形如 NANNAN...BABBAB
,显然满足条件。
By Um_nik
void solve() {
int n;
scanf("%d", &n);
int m = (n + 1) / 2;
printf("%d\n", m);
for (int i = 0; i < m; i++) {
printf("%d %d\n", 3 * i + 1, 3 * (n - i));
}
}
int main()
{
startTime = clock();
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
int t;
scanf("%d", &t);
while(t--) solve();
return 0;
}
C. Swap Game
题意:有一个数组
,Alice 和 Bob 轮流操作(Alice 先手)。每次操作可以选择一个位置 ,将 减去 后交换 和 。操作前遇到 的局面的人输。
由于是减法运算,可以从最小值入手考虑。如果
By turmax
#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t;cin>>t;
while(t--)
{
int n;cin>>n;
int a[n];for(int i=0;i<n;++i) cin>>a[i];
puts((a[0]==(*min_element(a,a+n))) ? "Bob" : "Alice");
}
return 0;
}
D. Yet Another Problem
题意:给你一个数组
,每次询问给出一个 ,询问将这部分子段全部变成 的最小操作次数。每次操作可以选择一个 ,使用这段区间的异或和来替换其中每个数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步