首页 > 其他分享 >AT_arc154_b

AT_arc154_b

时间:2023-11-15 19:33:24浏览次数:38  
标签:index 遍历 -- sum arc154 ++ int

题目简述

输入两个字符串 \(S\) 和 \(T\),将他们进行如下操作:

  • 将 \(S\) 字符串的第一位删掉,放在任意一位。

问最少多少次以后可以让 \(S\) 和 \(T\) 相等。

思路简述

看到这个题目以后,第一个想到的就是搜索,暴力搜一遍。但是仔细想来倒也不用这么麻烦,只需要特判一下就可以。

如果两个字符串连字母个数都不一样直接输出 \(-1\)。

否则只需要从 \(T\) 的末尾向首位遍历并与 \(S\) 比较。

  • 如果一样,就不用加,只需要将 index-- 继续向前遍历。

  • 如果不一样,就直接 sum++ 将次数加 \(1\) 就可以了,最后 sum 的值就是次数。

代码实现

#include<iostream>
using namespace std;

string s1,s2;//两个字符串 S 和 T。 
int n,t1[105],t2[105];//t1 和 t2 分别存储 S 和 T 中的26个字母各自出现了几次 。 

int main(){
	cin>>n;
	cin>>s1>>s2;
	//记录 S 中26个字母各自出现了几次 。 
	for(int i=0;i<n;i++)
		t1[int(s1[i]-'a')]++;
	//记录 T 中26个字母各自出现了几次。 
	for(int i=0;i<n;i++)
		t2[int(s2[i]-'a')]++;
	//如果两个字符串连字母个数都不一样,就说明不行。 
	for(int i=0;i<26;i++){
		if(t1[i]!=t2[i]){
			cout<<"-1\n";
			return 0;
		}
	}
	int index=n-1,sum=0;//index是 T 的下标,sum 是操作次数 
	for(int i=n-1;i>=0;i--){//从后往前遍历 
		if(s1[index]!=s2[i])
			sum++;//如果不一样就将 sum++ 增加操作次数 
		else index--;//一样就说明两个字符一样,就不用移动。继续将 T 向前遍历即可 
	}
	cout<<sum<<"\n";
	return 0;
}

标签:index,遍历,--,sum,arc154,++,int
From: https://www.cnblogs.com/To-Carpe-Diem/p/17834601.html

相关文章

  • [ARC154E] Reverse and Inversion
    2023-09-09题目[ARC154E]ReverseandInversion难度&重要性(1~10):9.5题目来源luogu题目算法数学解题思路Update:2023.8.28修改一处笔误这是一道很妙的计数题,考试的时候没想到。这道题我们首先会想到去化简一下式子\(\sum\limits_{i<j,p_i>p_j}(j-i)\),这很明显是要......
  • ARC154
    ARC154A似乎是均值反着用,直接最大乘最小即可#include<bits/stdc++.h>usingnamespacestd;constintMOD=998244353;intn;stringA,B;intmain(){//freopen("date.in","r",stdin);//freopen("date.out","w",stdout);......
  • ARC154 E
    非常好题目!!!求和不好搞的话,我们先把他转成期望!最后再乘上\((\frac{n(n+1)}{2})^m\)。然后拆贡献,考虑\(i\)的系数:\[\sum_{j\lti}[P_j\gtP_i]-\sum_{j\gti}[P_j\ltP_i]\]然后是特别波特的一步!这个东西对于所有排列都满足,所以在其它题看到类似地结构也可以联想:\[\sum_{j\l......
  • ARC154
    [ARC154A]SwapDigit和一定差小积大,竟可能的使两个数差大即可。复杂度\(O(n)\)。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintmod=998244353;intn;strings,t;intmain(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(......
  • 「解题报告」ARC154F Dice Game
    看起来就多项式,跟概率有关就上概率生成函数吧。考虑类似于FlipCells的套路,设\(F(x)\)为翻出所有的生成函数,\(G(x)\)为第一次翻出所有的生成函数,\(H(x)\)是翻出后任......
  • [数学记录]arc154F Dice Game
    看这篇看懂的,感觉比洛谷题解的两篇具体不少。来写一下翻译。看懂后觉得官方题解更简练的,但显然我还是新手。思维走过的道路是无可替代的。题意:\(n\)面的骰子每次随......
  • ARC154E Reverse and Inversion(*)
    ARC154EReverseandInversionACrecord......
  • Solution to ARC154F Dice Game -- Generating functions and polynomials
    Linktothequestion:Luogu,AtCoderPrefaceTheveryfirstgeneratingfunctionandpolynomialproblemsolvedinmylife!Thisblogisadetailedexplanationa......
  • 「ARC154F」Dice Game
    题目点这里看题目。你有一个\(n\)个面的骰子。每次抛骰子的时候,每个面出现的概率相等。现在开始抛骰子。设\(X\)为每个面都被扔出至少一次时的抛骰子次数,你需要对......
  • ARC154 解题报告【A-D】
    AtcoderRegularContest154ContestlinkMyresult声明:代码只包含核心代码,交上去会CE!A-SwapDigit设\(a,b\)的第\(i\)位分别为\(a_i,b_i\)。由于\(a_i\)与......