AtCoder Beginner Contest 370-C题解
思路
整体来说,一眼是一个贪心,具体来说先把让字典序变小的字符变化,让后再让字典序变大的字符变化
代码
#include <bits/stdc++.h>
using namespace std;
char s[105],t[105];
int a[105],sum;
int main()
{scanf("%s", s);scanf("%s", t);int st=strlen(s);for (int i=0; i<st; i++){if (s[i]!=t[i]){sum++;}}cout << sum<<endl;for (int i=0; i<st; i++){a[i]=t[i]-s[i];}for (int i=0; i<st;i++){if (a[i]<0){a[i]=0;s[i]=t[i];for (int j=0; j<st; j++){cout << s[j];}cout << endl;}}for (int i=st-1; i>=0; i--){if (a[i]>0){a[i]=0;s[i]=t[i];for (int j=0; j<st; j++){cout << s[j];}cout << endl;}}
}
后记
感觉也超水,只配当T2,总体难度为下位橙,对标GESP2~3级最后一两题
AtCoder Beginner Contest 370-D题解
前言
总体就是个暴力加上些许优化
注:本题解采用了官方题解来完善思路
思路
我们最初可以使用两个set数组来存储(实际上完全没必要,只是画蛇添足罢了),具体来说是
- q:一个数组,但是他的每一个元素是一个set类型,存储第i行的剩余墙壁的列信息
- x:同q数组,只不过是存储第j列的信息
但是对于每次查找都要看第一个墙壁在哪里,所以说我们可以用二分或并查集来优化
后记
总体来说很水,只用一些优化就可以搞定,感觉在平时只配T3,难度为中位黄,对标提高组第一题