「考试」省选模拟12

状态不好考的不行(x
还是在家里不够专注吧(?

T1
一个简单的离散化+bfs
细节不少
一个区间直接把两个端点都离散进去就行了。
统计答案的时候按块统计答案。

T2
减枝的搜索。
不是特别难。
发现其实格子并不是很多。
被\(K\)给限制住了。
太多的都是0.
那么\(n+m-1\)的大小必然是小于等于10的。
直接爆搜。
剪枝要用到一个小技巧。
当前如果许多个颜色并没有放过,那么我放上一种颜色搜索一下得到答案,那么这几个颜色是等价的可以直接不重复搜索,然后将答案乘上个数。

T3
挺厉害的\(SAM\)实在调不出来了不过。
可以先假设当前给出的树是\(Trie\)。
我对这个Trie建出exsam。
然后对于每一个前缀节点做出如下操作:
找到他对应的Trie节点x
设其子树区间为:\([L[x],R[x]]\)也就是\(dfs\)序。
然后对这个前缀节点的线段树做如下操作:
\[++d[L[x]],--d[R[x]+1]\]
然后在后缀树上线段树合并。
这样相当于做了个树上差分。
相当于这个节点的每个子孙节点都+1了。
对应节点来说,就是每个祖先都在他身上累加了。
然后对于一个匹配串。
我可以找到在Trie上两个点之间的路径。
首先求出lca,然后lca附近的部分均用hash处理。
剩下的就是一个点到根的路径上匹配串出现的次数。
这个东西直接在exsam上正反匹配匹配串,最终得到的节点设为x,当前查询的节点为\(t\),那么在x的线段树上查询\(dfn[t]\)处的前缀和即可得到这个点到根路径上匹配串出现的次数。
然后就没了,然后我写死了200多行调了好几个小时各种对拍都拍不出来我就不想写了。

原文地址:https://www.cnblogs.com/Lrefrain/p/12241019.html

时间: 2024-08-30 10:05:46

「考试」省选模拟12的相关文章

「考试」省选模拟13

在家的又一场. 状态还是一般吧. 自己扔了30分. T1 比较厉害的\(dp\),考场上想到了,结果因为细节太多就没有写(真的是多). 他其实就是个基环树dp. 我们首先断掉环上某个边,然后进行一次最大匹配的\(dp\),然后这样要求这个边必然不选. 另一种情况是这个必然选,那么这条边终点的出边必然不选,再次断那个出边 再\(dp\)一次得到答案. 考虑如何输出方案. 对于一个位置我们记录这个点的最大值出现在\(0/1\)上. 然后根据这个找到最佳方案所依赖的子节点方案. 即可输出方案了. T2

「考试」省选56

直接全都WA爆了. T1 博弈论模型,其实就是转化成\(xor\)和为\(0\). 我们考虑朴素的\(dp\),\(dp[i][j][k]\)设为前\(i\)个元素,去掉的元素个数\(mod\ d\)为\(j\),\(xor\)和为\(k\)的方案. 暴力转移即可. 考虑最终答案是\(dp[n][0][0]\) 我们降序排序\(\{a\}\) 那么如果\(upbit(a_i)=2^j\),说明转移过来的\(k\)必然是小于\(2^{j+1}\)的. 这样我们转移的时候就可以指转移\(2^{j+1

「考试」省选5

这套做的比较顺. 题也很好. T1 一个简单的贪心. 我们二分能够无伤通过的蛤个数. check就用之前用烂了的队列来check. 然后我们知道无伤通过最多一定对应这所有的石头被踩完,因为这样可以让每只蛤单次跳跃距离的最大值尽量的小. 这也就是说两种最优操作是合在一起的,有点像\(CSP-2019 D2T2\). 那么,二分出来剩下的就是必然要跳出大于\(D\)的了,我们取最小的几只,让他们一步从\(1\)跳过去. 另外一种情况是没有蛤可以无伤过. 这时候就让最便宜的那只去踩地雷,踩过所有的石头

「考试」省选7

比较简单的一场,但是我好像做的xibalan. 上来看了一小时题啥也不会. 然后发现\(T2\)数据范围像是分块. 然后傻逼一样去打根号算法. 最终结果当然是死了,到九点半也没写出来. 然而早就会\(T1\)正解了,于是先五分钟拿了\(T3\)的30分(为啥60那么好打..). 然后半个小时打完\(T1\)(临接表被卡常到90?) 然后继续搞T2最后弄出来了. 剩下十分钟啥也没干,三分块长从\(12s\)变成了\(2s\). T1 原题,\(xor\)差分之后就没了. T2 数据结构题毫无思维难

「考试」省选22

... T1真的我方了. T1 计算几何. ... 不管我用什么方法都\(A\)不了. 不管是用正弦定理余弦定理还是别的什么. 咕了. T2 简单的差分+马拉车. 先用马拉车处理出以每个位置为重心的回文串的长度. 然后处理出两个数组,\(st[i],ed[i]\). 分别表示以这个点为起点的回文串的终点的总和,以这个点为终点的回文串的起点的总和. 然后可以认为相当于是离线对数组加一个公差相等的等差数列,记录一下当前有几个数列以及首项的和即可线性差分了. 那么答案就是: \[ans=\sum\li

「考试」省选23

好难啊... T3 讲了一次了,不过似乎大家都没有听懂. 详细的复读一次. 这个题是构造题. 首先题意转化. 我们发现一个\(E\)的序列的形成过程中任意时刻的图都可以对应为一个大小为\(i\)大强连通分量和\(n-i\)个单独的点的形式. 因为只有一个强连通所能到达的状态是最多的,这样我们求出这种图的方案就是\(E\)序列的方案. 然后设\(dp[e][i]\)为大强联通有\(i\)个点,总共有\(e\)条边的方案数. 转移很简单,枚举一个新圈即可: \[dp[e][i]=dp[e-1][i]

「考试」省选27

好像很迷? T1 很奇怪的期望. 根据那几个条件可以发现,概率最终会收敛到精度以下. 我们只需要迭代足够的轮次即可. T2 暴力的\(O(n|S|2^n)\)都过了... 奇怪. 发现答案是求并集,考虑基础的并交容斥. 设\(g(S),S\subseteq A\)为\(S\)中的所有的情况中\(S\)的所有串的公共前缀长度*这种情况发生的方案数. \(P(S)=\),\(S\)中的问号个数. 那么\(g(S)\)对全局的贡献是\(g(S)2^{P(A-S)}\) \[ans=\sum\limit

「考试」省选37

今天的题超极棒. T1 汉诺塔问题. 我们考虑把汉诺塔想象成一颗搜索树. 然后在上面找到当前的某一步就相当于递归到最底层. 然后中间判一下合不合法,如果走右儿子就加上左边的贡献就行了. 大概是个noip题... T2 设函数\(next(n,k,s)\)为大于等于\(n\)的\(k\)进制数中,各个位和为\(s\)的最小正整数. 这个玩意可以用一个数位\(dp\)实现,复杂度是\(O(klogn)\),判断一下剩下的位置的最大和是否大于剩下的\(s\)即可. 然后有了这个函数之后我们就可以做了.

「考试」省选61

T1 dy讲的原题. 建议去翻\(DC\)大神的\(dp\)视频课. T2 结论题. 一种想法是抽象为一个\(ans+1 n\)的矩阵. 每次从上面一段连续区间向底层走. 维护每一个位置最高的高度是多少就可以得到答案了. 这里用一个队列实现. 每一个位置的队列长度可以用来更新答案. T3 生成函数题. 考虑容斥. 用走了几条输入边来容斥. 设\(dp[i][s]\)为当前在\(i\)点,经过的点集为\(s\)的方案数. 设\(f[s]\)为经过的点集为\(s\)的方案数. 设\(g[i][s]\