EDU-CFR-116-Div-2解题报告
做出来五道题。
A. AB Balance
{% note info no-icon problem %}
给你一个只含有 a
和 b
的字符串,问怎样通过修改尽可能少的字符,使得 ab
的数量和 ba
的数量相等。
{% endnote %}
显然,ab
的数量和 ba
的数量最多差 ab
的数量等于 ba
的数量。如果不同,修改开头或结尾字母使它们相同即可。
B. Update Files
{% note info no-icon problem %}
有
{% endnote %}
设当前有
C. Banknotes
{% note info no-icon problem %}
有
{% endnote %}
暴力贪心模拟。先尽可能多地用面值最小的货币,再用面值第二小的货币,以此类推。具体实现细节比较多,在这里放个代码。
{% note success code %}
#include <bits/stdc++.h>
using namespace std;
int n,k,a[10];
int main() {
int t;
cin>>t;
while(t--) {
cin>>n>>k;
k++;
for(int i=0;i<n;i++) {
cin>>a[i];
int cur=1;
while(x--)
cur*=10;
a[i]=cur;
}
long long res=0;
for(int i=0;i<n;i++) {
int cnt=k;
if(i<=n)
cnt=min(cnt,a[i+1]/a[i]-1);
res+=1ll*a[i]*cnt;
k-=cnt;
}
cout<<res<<endl;
}
}
{% endnote %}
D. Red-Blue Matrix
{% note info no-icon problem %}
有一个
{% endnote %}
假设我们已经知道了竖线的位置,如何分配红蓝呢?考虑以行为单位,以每一行的第一个元素为关键字进行从大到小的排序,则我们发现,一定是上面几行为红色,下面几行为蓝色,而这个两条分界线,一横一竖,左上、右上为红,左下、右下为蓝,则必须满足左上的最小值大于左下的最大值,右上的最大值小于右下的最小值。我们可以对矩阵分别求从左上、右下开始的前缀最小值和从左下、右上开始的前缀最大值。枚举横、竖线,然后就可以
E. Arena
待更新......
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步