首页 > 其他分享 >20230718巴蜀暑期集训测试总结

20230718巴蜀暑期集训测试总结

时间:2023-07-18 21:11:05浏览次数:35  
标签:rt 复杂度 暑期 20230718 sum LCA longrightarrow 集训 inb

T1

做了 \(3h\),时间复杂度不对,小样例都还有一个没过。

考虑容斥,不连通的情况枚举 \(1\) 号点所在连通块。

设 \(f_{S, i}\) 表示 \(S\) 连通且选了 \(i\) 条边的方案数。

设 \(inb_s\) 表示 \(S\) 内部的边数。

那么有转移:

\[f_{S,i}=\binom{inb_S}i-\sum_{T\subsetneqq S,1\in T}\sum_jf_{T,j}\binom{inb_{S\setminus T}}{i-j} \]

暴力转移复杂度 \(O(3^nm^2)\),难以通过。

可以将 \(f_S\) 看成多项式,那么转移就是:

\[f_S=(x+1)^{inb[S]}-\sum_{T\subsetneqq S,1\in T}f_T\cdot(x+1)^{inb[S\setminus T]} \]

换元,令 \(x'=x+1\),后面部分的乘法就变成了平移,可以 \(O(m)\) 解决。总时间复杂度 \(O(3^nm)\)。

T2

本来就没有准备打这道题的高分或者正解。打了一个不能证明正确性的贪心拿了和输出 NO 一样的分。

和差相关,考虑差分。令 \(c_i=a_{i+1}-a_i\)。那么 \(b_i=\max\{|c_i|,|c_{i+1}|,|c_i+c_{i+1}|\}\)。

设 \(dp_{i,x}\) 表示考虑了前 \(i\) 个数,\(c_i=x\) 是否合法。转移可以写成这样:

\(c_i\) \(\longrightarrow\) \(c_{i+1}\)
\(b_i\) \(\longrightarrow\) \([-b_i,0]\)
\((0,b_i)\) \(\longrightarrow\) \(b_i-x,-b_i\)
\(0\) \(\longrightarrow\) \(b_i,-b_i\)
\((-b_i,0)\) \(\longrightarrow\) \(-b_i-x,b_i\)
\(-b_i\) \(\longrightarrow\) \([0,b_i]\)

可以发现转移关于 \(0\) 对称,初始状态也关于 \(0\) 对称,所以可以只看一半。

修改一下状态表示,设 \(dp_{i,x}\) 表示考虑了前 \(i\) 个数,\(|c_i|=x\) 是否合法。转移就长这样:

\[[0,b_i)\longrightarrow b_i-c_i,b_i\\ b_i\longrightarrow [0,b_i] \]

发现 \(dp_i\) 由一个区间和若干单点组成,区间维护左右端点,单点用双端队列维护即可。复杂度 \(O(n)\)。

T3

打了一个 \(O(nq)\) 的 Z 函数。就莫名其妙多了 \(10pts\)。

设 \(lcp(i,j)\) 为原串中后缀 \(i,j\) 的最长公共前缀。

答案为 \(\sum_{i=L}^R\min(R-i+1,lcp(L,i))\)。

将序列倒过来建一个 SAM,两个后缀的 lcp 就是它们在 parent tree 上的 LCA 的 len。

考虑点分治。先将每个询问挂到它的左端点对应的节点上。设当前分治中心为 \(rt\),要统计 \(L\) 到 \(i\) 的路径(过 \(rt\))答案。分类讨论:

  • 如果 \(rt\) 在 \(LCA\) 到 \(i\) 的路径上,此时 \(LCA\) 只与 \(L\) 有关。可以统计和每个 \(L\) 对应 \(i\) 的答案,线段树乱搞。

  • 如果 \(rt\) 在 \(LCA\) 到 \(L\) 的路径上,此时 \(LCA\) 只与 \(i\) 有关。可以考虑每个 \(i\) 对那些 \(L\) 作贡献,转化为二维数点。、

总时间复杂度 \(O(n\log^2n)\)。

标签:rt,复杂度,暑期,20230718,sum,LCA,longrightarrow,集训,inb
From: https://www.cnblogs.com/dks-and-xiao-yu/p/17564148.html

相关文章

  • 2023ACM暑期集训 DAY 3
    目前进度——动态规划1:线性dp、背包问题,区间好题1012[NOIP1999]拦截导弹前言本题不重要,重要的是关于伪单调栈求最长单调子序列的理解。伪单调栈求最长单调子序列的一些理解重点最终伪单调栈中的序列不一定是最长单调子序列。以最长上升子序列为例,解释操作的意图。若目前......
  • 暑期熔炉7月16
    幻觉贸易阶级电梯高级魔术高级发明演员失业电缆失窃共同富裕共享恐惧笔记 包装类基本数据类型及对应的包装类序号基本数据类型包装类1byteByte2shortShort3intInteger4longLong5charCharacter6floatFloat7doubleDouble8boolea......
  • 你省(福建)省队集训模拟赛题解
    Day5$\texttt{T1}$简要题意有两个正整数\(a<b\le10^9\),给出\(\dfrac{a}{b}\)的小数点后\(19\)位,要求还原\(a,b\),保证有解。solution一个科技:\(\texttt{Stern-Brocottree}(SBT)\),可以参考这个博客学习。先给出$O(n)$找的代码#include<bits/stdc++.h>#defineLL......
  • 2023ACM暑期集训 DAY 2
    模拟赛1题解A上班代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;intx,y,z;intmain(){cin>>x>>y>>z;printf("%d",x+min(y,z));}B 崇拜代码点击查看代码#include<bits/stdc++.h>#definelllonglong#define......
  • 暑期 7.15 第一周博客总结
    在这一周中我学习了SSM的基本框架,学习了springboot与mybats等的基本知识,我也学习了b站上黑马程序员最新出的javaweb的视频教程,我又深入学习了一下javascri的语法。1.我学习了浏览器弹出框的警告:window.alert("")//浏览器弹出警示框document.alert("")//写入html在浏览器展示co......
  • 题解 P2839【[国家集训队] middle】
    Problem一个长度为\(n\)的序列\(a\),设其排过序之后为\(b\),其中位数定义为\(b_{n/2}\),其中\(a,b\)从\(0\)开始标号,除法下取整。给你一个长度为\(n\)的序列\(s\)。回答\(Q\)个这样的询问:\(s\)的左端点在\([a,b]\)之间,右端点在\([c,d]\)之间的子区间中,最大的中......
  • 集训游记草稿
    Day2P7154[USACO20DEC]SleepingCowsP将奶牛和牛棚放到一起从大到小排序然后dp.考虑提前确定一只奶牛是否被空余出.记\(F_{i,j,0}\)表示前\(i\)个东西,P8863「KDOI-03」构造数组考虑按序列顺序dp,记\(F_{i,j}\)表示前\(i\)位全部变成\(b_i\),向后借\(j\)次操作的......
  • 【学习笔记】山东省队第三轮集训
    Day2A.sequence题目描述:题目分析:考虑一个很简单的\(dp\)就是设\(f[i]\)表示考虑了前\(i\)个位置最多可以划分为多少个序列。转移就是可以直接从\(f[i-1]\)继承,或者从\(j\)满足\(\sum_{k=j+1}^{i}c_i=0\),也就是前缀和相等。可以发现的是对于从\(j\)转移这种......
  • 你省(福建)省队集训 Day5 T1 题解
    简要题意有两个正整数\(a<b\le10^9\),给出\(\dfrac{a}{b}\)的小数点后\(19\)位,要求还原\(a,b\),保证有解。solution一个科技:\(\texttt{Stern-Brocottree}(SBT)\),可以参考这个博客学习。先给出\(O(n)\)找的代码:......
  • 暑期总结2
    这周本想着学习大数据技术,在看了一定的视频之后,心里很是不安,觉得自己没学的东西太多。所以,本着能够学的更好的态度,我决定重新更加系统的学习Java以及javaweb等,在已经有了一定基础的前提下,自己在重新学习的时候速度和理解力较第一次更加快,理解的更加透彻。在这周的学习中,我发现其......