• 2024-06-23[题解]AT_abc343_g [ABC343G] Compress Strings
    思路首先假设有两个串\(a,b\),如果\(b\)是\(a\)的子串,且\(a\neqb\)则不需要考虑\(b\);如果\(a=b\),则如需要保留一个\(a\)。做完上述操作后,显然最终的答案是由这些串按照一定顺序拼接起来,再删掉重叠部分。例如:abbcc与ccdde拼接为abbccccdde,发现cc是重复的,所以
  • 2024-03-27AT_abc343_f的题解
    (一)F<E。显然是线段树,虽然分块也能过。每个线段树上的节点记录最大值,第二大值,最大值个数,第二大值个数。合并操作注意值相等的情况。(二)AC代码。赛事写得有点乱。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,q,a[400010];structnode{ int
  • 2024-03-13AT_abc343_g [ABC343G] Compress Strings 题解
    题目传送门前置知识前缀函数与KMP算法|状压DP解法由于\(\sum\limits_{i=1}^{n}|S_{i}|\)极大且不需要记录路径,所以luoguP2322[HNOI2006]最短母串问题的枚举所有可能的字符串\(T\)进行判断不可做。设\(f_{i,j}\)表示当“字符串包含状态”对应的二进制数为\(
  • 2024-03-07AT_abc343_f [ABC343F] Second Largest Query 题解
    分析考虑乱搞。对于求次大值,用线段树维护就行了。记录下每个区间的最大、次大值。则两个子区间的父区间的最大值就是这四个最大的,次大值就是这四个次大的。复杂度\(O(\logn)\)。求次大值的出现次数,乱搞就行了。因为带修,带修莫队或者分块有些麻烦。其实用线段树就行。在维护区
  • 2024-03-05AT_abc343_G [ABC343G] Compress Strings 题解
    分析水题,评分能有$2100$可能是因为很多人卡E了。我说真的,E好难啊。$n$只有$20$,考虑从状压的角度入手。定义状态函数$f_{s,i}$表示当某个字符串$T$包含了所有$s$的二进制中为$1$的下标$S_j$且$T$末尾包含的子串为$S_i$时$T$的最小长度。那很显然的就有转
  • 2024-03-04abc343比赛总结
    写在前面A简单,随便取两个值判一下,不过这道题的名字不吉利,叫什么WA啊?B简单,读入的时候判断一下是不是\(1\)就行了。C有点点难,题目不是那么好理解(尤其是英文不好的话)。虽然说\(N\le10^{18}\)但是仔细算一下其实只需要1e6的遍历一遍就够了,毕竟有个三次方。D
  • 2024-03-03ABC343 A~E 解题报告
    A-WrongAnswer模拟题,只需要每次输出\(0\)到\(9\)内不等于\(a+b\)的值就行了。#include<bits/stdc++.h>usingnamespacestd;template<typenameT>Tread(Tx){Topt=1,sum=0;charch=getchar();while(!isdigit(ch)){if(ch=='-')opt=
  • 2024-03-03ABC343 G Compress Strings 题解
    QuestionABC343GCompressStrings给定\(N\)个字符串\(S_1,S_2,\cdots,S_N\)找到一个包含所有这些字符串作为子字符串的最小长度的字符串一个字符串\(S\)包含一个字符串\(T\)作为子字符串是指:如果\(T\)可以通过从\(S\)的开头删除零个或多个字符以及从末尾删除
  • 2024-03-02C - 343
    C-343https://atcoder.jp/contests/abc343/tasks/abc343_c 思路先找出最大三次方数,次数小于或者等于n,参考:在三次方根的可能范围内,使用二分查找法,定位最大的三次方根https://www.cnblogs.com/Ghost-Knight/p/17970849 从此最大的三次方根开始,向下枚举,枚举过程中对
  • 2024-03-02ABC343
    T1:WrongAnswer模拟代码实现a,b=map(int,input().split())c=a+bifc==0:print(1)else:print(0)T2:AdjacencyMatrix模拟代码实现n=int(input())a=[list(map(int,input().split()))foriinrange(n)]foriinrange(n):print(*[j+1f