首页 > 其他分享 >24.4.6 题解

24.4.6 题解

时间:2024-04-06 16:35:22浏览次数:16  
标签:连边 le log val 24.4 题解 建边 区间

4.6 模拟赛

T1 困难的图论

题意:找出所有 在且仅在 1 个简单环中的边,输出编号的异或和。

一个错误的想法:找边双连通分量,看边数是否等于点数

反例:

正解是点双

所以我在想,为什么是点双,不是边双呢?

什么时候找点双,什么时候找边双呢?

T2 中等的字符串

已知 \(m\) 个关键词 \(s_i\),每出现一次得分 \(a_i\),求一个未知的长度为 \(n\) 的文本,最大得分是多少。

数据范围:\(n\le 10^{12},m\le 100,\sum |s_i|\le 200,a_i\le 200\)

显然 AC 自动机上 dp,但是 1e12

key:矩阵优化 AC 自动机上 dp

非常神奇。

我们发现转移方程是 \(f_{i,j}=\max\{f_{i-1,k}+val(j,k)\}\)

其中 val 代表从 \(j\) 点走到 \(k\) 点的贡献,如果走不到就是负无穷。

在上面这个式子里,\(j\) 到 \(k\) 只能走一步,考虑能不能结合起来多走几步(因为 \(n\) 是步数)。

发现 \(f_{i,j}\) 其实就是走 \(i\) 步意义下的 \(val(0,j)\),故满足结合律,可以类似矩阵乘求 \(val(j,k)\)。

复杂度 \(O((\sum|s_i|)^3\log n)\)

T3 上网

知道一些信息:

  1. 值域 \([1,10^9]\)
  2. \(x_{p_i}=d_i\)
  3. 对于下标区间 \([L_i,R_i]\),可以分成“大组” \(S\) & “小组” \(T\),满足 \(\forall i\in S,j\in T,x_i>x_j\)

求一个可行的构造方案。

整体思路:大小关系建成 DAG,拓扑排序赋值。

30pts:暴力 \(O(n^2)\) 建边

50pts:每个信息设定中间点,用边权区分,\(O(nm)\) 建边

正解:线段树优化建边,\(O(k\log n)\)

先像线段树一样,每个点表示区间最大值,和子节点之间连边权为 0。

每个信息:

  1. 找出 \(k\) 个点分隔开的 \(k+1\) 个区间
  2. 每个区间找到线段树对应的 \(\log n\) 个区间
  3. 新建一个点 \(x\) 表示这些区间的最大值
  4. x 与这些区间连边权为 0
  5. k 个点与 x 连边权为 1

标签:连边,le,log,val,24.4,题解,建边,区间
From: https://www.cnblogs.com/Cindy-Li/p/18117534

相关文章

  • 2024.4.6 - 4.12
    SatJOI2023Final宣传2\(n\)个人,每个人有住所位置\(X_i\)与影响力\(E_i\),一个人\(i\)拿到书后会号召另一个人\(j\)买书仅当\(|X-i-X_j|\leqE_i-E_j\),你最少送多少个人书才能使得所有人都会有书(送的或者被号召买书)。\(n\leq5\times10^5\)。拆一下绝对值,得:\[......
  • CF1200E Compress Words 题解
    题目链接:CF或者洛谷注意到总字符串长度不超过\(1e6\),对于两个串之间找前后缀匹配,只要能暴力枚举长度,\(check\为\O(1)\),那么最后显然线性复杂度。可以考虑\(kmp\),也可以考虑字符串哈希,最好上双哈希,然后拼串显然是在尾部继续添加新的前缀哈希,这个需要添加的串可以单独由匹配......
  • 牛客小白月赛90题解
    A.小A的文化节#include<bits/stdc++.h>#defineintlonglong#defineendl"\n"usingnamespacestd;constintN=1e5+10,mod=1e9+7;intn,m,a[N];voidsolve(){ cin>>n>>m;for(inti=1;i<=n;i++)cin>>a[i];intres=0......
  • BNDS 2024/4/6模拟赛题解
    T1方程描述给出非负整数\(N\),统计不定方程\(X+Y^2+Z^3=N\)的非负整数解\((X,Y,Z)\)的数量。输入输入数据,包含一个非负整数\(N\)。输出输出数据,包含一个非负整数表示解的数量。数据范围40%的数据,\(N<=10000\)60%的数据,\(N<=10^8\)100%的数据,\(N<=10^{16}\)分析......
  • LG_B3951 [GESP样题 五级] 小杨的队列 题解
    比较简单的一道逆序对的题,甚至不用\(\Omicron(n\logn)\)的归并,只需要\(\Omicron(n^2)\)的优化冒泡。就是一个在队列里每次push一个元素,然后查找逆序对的问题。值得一提的是,这道题身高不重复,所以才能优化冒泡拿满分,不然的话就得老实用归并了。直接看代码吧。#include<b......
  • AT_xmascon21_b Bad Mood 题解
    这是一道比较简单的结论题。不难发现,最小得分为\((n+1)(m+1)-nm\),化简得到:\[\begin{aligned}&(n+1)(m+1)-nm\\=&nm+n+m+1-nm\\=&n+m+1\end{aligned}\]继续不难发现,最大得分应该是最小得分加上\(\lfloor\frac{(n-2)(m-2)+nm}{4}\rfloor\)的结果,化简,得到(忽略向下取整......
  • LG_P10183 [YDOI R1] Running 题解
    首先感谢@jjh20100730dalao提供的思路。这是一道一道简单的数学题。首先不难发现,起始时间为\(0\),那么到达每一个超市时的时间必须要能被\(v\)整除,注意到题目要求最大,所以是要求\(a_i\)的最大公因数。注意到到达每个超市的时间必须要是偶数,这样的话不满足\(v\)是最大......
  • LG_P8728 [蓝桥杯 2020 国 B] 填空问题 题解
    蓝桥杯2020国BP8728题解A题直接写Python暴力一下。Output:563故答案为\(563\)。B题直接写Python暴力一下(欸怎么又来了)。总之就是写一个DFS,枚举每一个向外走,步数\(x\)满足\(x\le2020\)的点就好啦!Output:20312088故答案为\(20312088\)。C题直......
  • CF1827E Bus Routes 题解
    这是一道拥有*3400标签的题目。首先很显然可以将题意中的条件转化为任意两个度数为一的节点都能通过不超过两条路径互相到达。接下来随便取一个度数大于一的节点作为根,如果\(n=2\)直接判掉即可。考虑两个叶子节点能互相到达一定需要满足什么条件,发现两个点通过一条路径能到......
  • 2024.4.5 RMQ补题
    P2048[NOI2010]超级钢琴前缀和处理连续子段的和弦,然后rmq求最大值运用堆存储最优答案每次取出堆头统计一次后,除掉统计点再分成两段加入即可,共k次#include<bits/stdc++.h>#definemaxn500010#defineINF0x3f3f3f3f#defineintlonglongusingnamespacestd;int......