首页 > 其他分享 >[CF1902E] Collapsing Strings

[CF1902E] Collapsing Strings

时间:2023-12-31 21:34:31浏览次数:27  
标签:cnt CF1902E int Collapsing cin ans FL Strings size

题目链接

考虑拆贡献。

显然答案可以拆成对于所有 \(s_i\) 的每一个后缀的反串,作为前缀在所有串中的出现次数的加和。

这个东西字典树维护一下就行了。

不知道是谁考场上写哈希赛后被人对着模数卡掉了

点击查看代码
#include <bits/stdc++.h>
#define FL(i, a, b) for(int i = (a); i <= (b); ++i)
#define FR(i, a, b) for(int i = (a); i >= (b); --i)
using namespace std;
constexpr int N = 1e6 + 10;
int n, tot, cnt[N], t[N][26];
long long ans; string s[N];
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    cin >> n;
    FL(i, 1, n) cin >> s[i], ans += 2ll * n * s[i].size();
    FL(i, 1, n){
        int p = 0, l = s[i].size();
        FR(j, l - 1, 0){
        	if(!t[p][s[i][j] - 'a']) t[p][s[i][j] - 'a'] = ++tot;
        	++cnt[p = t[p][s[i][j] - 'a']];
        }
    }
    FL(i, 1, n){
        int p = 0, l = s[i].size();
        FL(j, 0, l - 1){
        	if(!t[p][s[i][j] - 'a']) break;
        	ans -= cnt[p = t[p][s[i][j] - 'a']] * 2;
        }
    }
    cout << ans << endl;
    return 0;
}

标签:cnt,CF1902E,int,Collapsing,cin,ans,FL,Strings,size
From: https://www.cnblogs.com/zac2010/p/17938017

相关文章

  • CF1320D Reachable Strings
    110和011互相转化,相当于就是0在连续两个1的情况下,移动两个位置能够发现,0的位置的奇偶不会改变,且很多个0之间的相对位置不会改变猜想考虑这个答案只跟0的奇偶性有关,下面小证一下:(注意下面所说的“奇偶”指的是两个字符串的分别第一个字母为奇数时的奇偶,不是总字符串的奇偶)若0的......
  • 无涯教程-Erlang - Strings(字符串)
    通过将字符串括在引号中,可以在Erlang中构造一个字符串文字,需要使用双引号(如"HelloLearnfk")构造Erlang中的字符串。-module(helloLearnfk).-export([start/0]).start()->Str1="Thisisastring",io:fwrite("~p~n",[Str1]).上面程序的输出将是-“Thisisa......
  • Strings字符串
    字符串参考视频链接:【字符串】聪明办法学Python第二版_哔哩哔哩_bilibili用两种不同的引号是为了表达一些在引号里面要用到引号的情况!字符串中的转义字符前面有反斜杠\的字符,叫做转义字符(只能作为一个字符)print("双引号:\"")双引号:"print("反斜线:\\")反斜线:\print(......
  • Count Beautiful Substrings II
    CountBeautifulSubstringsIIYouaregivenastring s andapositiveinteger k.Let vowels and consonants bethenumberofvowelsandconsonantsinastring.Astringis beautiful if:vowels==consonants.(vowels*consonants)%k==0,inothert......
  • Go标准库学习:strings和bytes
    strings包和bytes包strings包和bytes包非常像,几乎所有函数都有string和[]byte两种接口,其中前者被实现在strings包中,而后者被是现在bytes包中,所以这里将这两个包一起学习。官方文档:strings包:https://pkg.go.dev/[email protected]包:https://pkg.go.dev/[email protected]函数......
  • 无涯教程-Tcl - 字符串(Strings)
    Tcl的原始数据类型是字符串,这些字符串可以包含字母数字字符,仅数字,布尔值甚至二进制数据,Tcl使用16位Unicode字符,字母数字字符可以包含字母,包括非拉丁字符,数字或标点符号。字符串表示与其他语言不同,在Tcl中,当它只是一个单词时,不需要双引号。一个例子可以是-#!/usr/bin/tclshse......
  • 4-1898E - Sofia and Strings
    题意:题解:对于有排序操作且不限次数,最好考虑每次只对两个排序,如果t中的字母在s中的j位置,则s[0,j]之间小于t中字母的字母都要消去,用队列存s中字母的位置,扫描t,每次用s中剩余位置最小的,在消去不可用的即可。代码:点击查看代码#include<bits/stdc++.h>#defineintlonglongusi......
  • 无涯教程-D语言 - 字符串(Strings)
    字符数组我们可以用以下两种形式来表示字符数组.第一种形式直接提供大小,第二种形式使用dup方法创建字符串"Goodmorning"。char[9]greeting1="Hellolearnfk";char[]greeting2="Goodmorning".dup;这是使用上述简单字符数组形式的简单示例。importstd.stdio;voidm......
  • Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!) B. Kuroni an
    Problem-1305B-Codeforces 啦啦啦,这题题目有点长,概括一下就是,希望将所有()匹配的括号去掉问你需要操作多少次 双指针,一个i一个j,从前往后记录匹配的括号如果发现:1.括号匹配2.i<jok,就放入ans (⊙o⊙)…,最后记得sort一遍ans,第一遍因为这个wa了一发 #include......
  • Strings of Impurity
    link不懂为什么都写平衡树,明明set就好了啊,思路跟平衡树差不多,实现起来较为简单。intn,m,k;ints[N];strings1,s2;intcnt[N];vector<int>t;set<int>p[N];intmain(){ios::sync_with_stdio(false);cin.tie(nullptr); cin>>s1>>s2; n=s1.size()......