您当前的位置: 首页 > 

对方正在debug

暂无认证

  • 6浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

A. Two 0-1 Sequences(贪心)

对方正在debug 发布时间:2022-08-01 01:26:00 ,浏览量:6

题目

题意

给定a,b这两个01字符串 现a可以执行操作 选取a的头两个字符,并删除其中一个,将剩下的元素重新拼接成新的字符串。 即a = a[0] + a[2:]或者a = a[1] + a[2:]

问通过上述若干次操作,能否将a转化为b。

思路

a的每次操作,本质上就是删除前缀若干字符后,能否最终和b相等。 我们贪心的保留a和b后缀相同的部分。

  • 如果b和a的最长公共后缀,小于len(b)-2,此时a和b至少有2个字符不同,直接gg
  • 如果b和a的最长公共后缀,等于len(b)-1,此时a和b有1个字符不同。我们只需看a的剩余前缀,是否有等于b[0]的元素即可。
  • 如果b和a的最长公共后缀,等于len(b),此时显然有解。
代码
#include
using namespace std;
const int maxn = 55;

int n, m;
char a[maxn], b[maxn];
void solve() {
	scanf("%d%d", &n, &m);
	scanf("%s%s", a, b);
	int i = n - 1, j = m - 1;
	while (i >= 0 && j >= 0) {
		if (a[i] != b[j]) {
			break;
		}
		--i;
		--j;
	}
	int flag = 0;
	while (i >= 0) {
		if (a[i] == '0') {
			flag |= 1;
		} else {
			flag |= 2;
		}
		--i;
	}
	bool ok = j             
关注
打赏
1664895754
查看更多评论
0.0424s