首页 > 其他分享 > YACS 2022年12月月赛 乙组 T1 拼接单词 题解

YACS 2022年12月月赛 乙组 T1 拼接单词 题解

时间:2023-01-12 11:34:31浏览次数:45  
标签:YACS ++ 题解 s1 乙组 long int s2 字符串

一道结论题,代码相当的短。
我们先来考虑会拼出重复的情况:
那必定是第一个字符串里有一个 $a$(其他的也行),第二个也有一个 $a$。

那么我们就可以选择拿第一个字符串 $a$ 前面的和第二个字符串 $a$ 后面拼。
至于两个 $a$,选其中一个就可以构造出两个一样的了。

需要注意的是, 如果第一个字符串的 $a$ 正好在第一位,或者第二个字符串的 $a$ 在最后一个就没有办法构造喽,所以我们忽略掉这两种构造情况。、

接着拓展到一般情况:第一个字符串中有 $s1$ 个 $a$,第二个中有 $s2$ 个 $a$。

那么一共可以构造出 $(s1 +1)\times (s2+1)$ 个单词。(前面选 $0-s1$ 个 $a$ 接后面选 $0-s2$ 个 $a$)

其中不重复的有多少呢?我们发现最少可以选 $0$ 个 $a$,最多可以选择 $s1 + s2$ 个 $a$。

不重复的一共有 $s1 + s2 + 1$ 个,重复的就有 $(s1 + 1)\times (s2 +1) - s1 - s2 - 1 = s1\times s2$ 个。

最后用所有的方案数减去重复的方案数就可以了。

注意开 $longlong$,代码相当的短,不压行只有 $13$ 行,可以和上升序列一决高下。

#include <iostream>
using namespace std;
string a, b;
long long ans, sum1, sum2;
long long b1[30], b2[30];
int main () {
    cin >> a >> b;
    for (int i = 1; i < a.size (); i ++) ++ b1[a[i] - 'a' + 1];
    for (int i = 0; i < b.size () - 1; i ++) ++ b2[b[i] - 'a' + 1];
    for (int i = 1; i <= 26; i ++) ans -= b1[i] * b2[i];
    cout << ans + a.size () * b.size ();
    return 0;
}

 

标签:YACS,++,题解,s1,乙组,long,int,s2,字符串
From: https://www.cnblogs.com/Xy-top/p/17046004.html

相关文章

  • YACS 2022年12月月赛 乙组 T2 八进制小数 题解
    纪念一下,两件事。$1.$打$YACS$一年了,时间过得好快啊。$2.$第一次$AK$乙组。高精板子。$8$进制转十进制,很简单。小数部分第一位的数字乘上$8^{-1}$,第二位就乘上......
  • LOJ #535 题解
    问题转化为交换两个数,使排列的逆序对数最少。设交换\(a_i\)和\(a_j\)且\(i<j,a_i>a_j\)。则减小的逆序对数为\[1+\sum_{k=i+1}^{j-1}[a_k<a_i]-[a_k>a_i]+[a_k>a_j]......
  • AT2282 [ABC051C] Back and Forth 题解
    Description在一个平面直角坐标系内,有一点\(A(x_1,y_1)\)和点\(B(x_2,y_2)\)你需要从\(A\)点走到\(B\)点,再走到\(A\)点,再走到\(B\)点,再回到\(A\)点。期间,你......
  • P4198 楼房重建题解
    一道经典的线段树二分应用题目转化:把每个点换成斜率,此时发现,一个点能够被看见,当且仅当他本身就是前缀最大值用线段树维护单点修改,区间询问前缀最大值数量解题思路:要......
  • 2022SWJTU寒假选拔赛1题解
    目录A-马宝の皮颜矩阵I-小幻777J-小幻考考你A-马宝の皮颜矩阵Description给定矩阵\(a[N][M],1\leN·M\le1e5,1\lea[i][j]\le1e5\),求所有相同元素的曼哈顿......
  • 洛谷P6599 「EZEC-2」异或【题解】
    题目大意有\(T\)组数据,每组数据给定两个\(l,n\in\mathbb{N*}\),构造一个长为\(l\),每个元素不超过\(n\)的数组令他为\(a\),要使\[\sum_{i=1}^l\sum_{j=1}^{i-1}a_i\oplu......
  • SYUCT acm第八次限时训练题解
    SYUCTacm第八次限时训练题解MakeitBeautiful题目大意code#include<bits/stdc++.h>usingnamespacestd;constintN=100;inta[N];intb[N];voidsolve()......
  • 【题解】AT3611 Tree MST
    喝,长大了......
  • CF 1581B Diameter of Graph 题解
    题面:给定n个顶点,m条边,任意两点并且最大距离小于k,两个顶点只能连一条边,询问是否能构造出这样的图型思路:1.n=1时进行特判,只有k>1时成立2.m=n(n-1)/2时,是完全图,只有k......
  • 【题解】CF1268C K Integers
    萌新不懂就问,这是什么时代的题啊???思路trick题。首先根据trick可知:先将\([1,k]\)中的数聚在一起再排序是最优的。排序的花费是逆序对数,所以现在的问题是求把\([1,......