首页 > 其他分享 >2022/10/19 考试

2022/10/19 考试

时间:2022-10-19 23:01:16浏览次数:52  
标签:10 le 19 可以 节点 2022 考虑 我们

tmd,又开始写这种东西了。可是感觉不写之后又找不到。可一写的话绝对就是我考爆了,真丢人/kk

比赛链接

T2 金银变换

Description

给出两个长度为 \(n\) 的序列 A,B 以及整数 \(k\),每次可以交换 A 中相邻的两个长度为 \(k\) 的子串,问是否可以使 A,B 相等。多组询问。

\(n\le 10^5,\sum n\le 10^6\)

Solution

tmd的结论题,每次一考就猜不到,而且还跟nm逆序对有关,更做不出来了。/fn

先考虑互不相同的情况。可以看出一个位置 \(\mod k\) 的值是不会变的,那么我们可以先判断同余系是否元素相同,所以我们假设是需要把 \(A_{i+tk}\) 移到 \(A_i\)(\(t>0\)),那么在不改变 \(A_{1,2,...,i-1}\) 的情况,如果 \(n-k+1\ge j\) (\(j\) 是我们当前需要往前移的位置),我们可以操作 \(j-k\) 这个位置,否则我们可以操作 \(n-2k+1\) 这个位置。可以发现,如果有解的话这样一定是可以构造出来的。

那么我们就可以看出一个必要条件,就是我们先按 \(\mod k\) 的同余系分类,如果 \(A_i=B_j\),那么我们可以考虑把 \(A_i\) 赋值为 \(j\),那么我们最后是需要 \(A_i=i\)。可以发现的是,我们一次操作一定会使得逆序对 \(+/-1\),所以需要我们每个组的逆序对奇偶性相同。

然后你发现找不到别的性质了。所以我们就需要考虑这玩意是否充分。我们考虑用我们的贪心策略进行考虑,可以发现,我们总可以是 \(\forall i\in [1,n-2k+1]\cup \{n-k+1\}\) 中 \(A_i=i\)。可以看出 \(n-k+1\) 所属同余类逆序对为 \(0\),所以其他组都需要是偶数,另一个可以发现的是,其他组的逆序对 \(\le 1\),所以如果满足该性质,则一定都是 \(0\),所以该条件充分。

然后我们还需要考虑一个同余类有重复元素的情况。其实可以发现,如果我们交换两个相同的值最后所在位置,那么我们可以交换它逆序对的奇偶性,所以这种情况可以不作考虑。

复杂度 \(\Theta(n\log n)\)。

T3 枝江旧事

Description

给出 \(n\) 个操作,有一个 \(w,p\),\(w\) 初始值为 \(1\),\(p\) 为一个质数,每个形如:

  1. 把 \(w\) 赋值为 \(x\)

  2. \(w\to w\times x\pmod p\)

可以任意排列这 \(n\) 个操作,询问最后有多少个值在 \([0,p-1]\) 中且不能被表示。

\(n,p\le 10^6\)

Solution

我们其实首先可以看出我们取原根,因为 \(p\) 是质数,所以可以保证一定存在。然后我们就把乘法变成了加法,问最后有哪些可以表示。

这样的话我们可以做 01背包,用 bitset 优化可以做到 \(\Theta(1/\omega np)\)。但是显然无法通过。

我们考虑这样一种做法,考虑当前是背包中加入 \(v\),我们在当前区间 \([l,r]\),如果它与 \([l+v\mod (p-1),r+v\mod (p-1)]\) 存在不同,那么我们就递归下去,否则就返回。到叶子节点修改即可。这个可以用hash判断。

考虑到如果不存在 \(i=0,(i+v\mod (p-1))=1\) 的情况,那么我们可以轻易分析出这是 \(\Theta(n\log^2 n)\)(hash值需要用树状数组 \(\log n\) 处理)的。但是对于上面一种情况,我们可以发现,如果我们在 \(i\) 和 \((i+v\mod (p-1))\) 中连边,那么会形成若干个环。如果一次操作环上面都是 \(1\),显然不会处理到,否则就会存在 \(0,1\) 这种情况,不过你发现这个一定可以对应一个 \(1,0\)(即对于它的 \(1\) 找到后面的一个 \(0\)以及这个 \(0\) 的前缀),所以删除一个 \(1,0\) 顶多用 \(\Theta(2)\) ,所以总复杂度仍是 \(\Theta(n\log^2n)\) 的。

T4 膜皮圣经

Description

一个长度为 \(n\) 的序列 \(c_{1,2,...,n}\) 以及 长度为 \(n-1\) 的 \(d_{1,2,..,n-1}\),有 \(q\) 次查询,每次给出 \([L,R]\),求出 \(\max w(l,r),L\le l\le r\le R\),我们定义 \(w(l,r)\) 为:

\[c_k\times (\sum_{i=l}^{r-1} d_i+\min(\sum_{i=l}^{k-1} d_i,\sum_{i=k}^{r-1} d_i) \]

其中 \(k\) 是 \(c_{l,l+1,...,r}\) 的最小值位置。

\(n\le 5\times 10^5,q\le 10^5,d_i\le 10^5\),\(c_i\) 满足互不相同。

Solution

因为是纯口胡,所以并不能保证正确。

我们考虑见建出小根笛卡尔树,那么我们可以找到 \([l,r]\) 包含的最大的一个节点,如果取这个最小值,那么 \(l,r\) 分别取它能覆盖的位置即是最优(下面称这个节点为“该节点”)。

然后考虑到左右两边仍有残余,因为是对称的问题,所以我们可以仅考虑左边,右边同理。考虑左边一个节点,假设最小值位置在 \(k\),覆盖范围为 \([l,r]\),查询 \([L,R]\),当且仅当 \(k\ge L\) 的时候存在贡献。此时右端点取 \(r\) 一定最优。考虑如何取到最优的 \(l\)。观察我们答案的形式,我们不妨设 \(S_i\) 为前缀和,那么即为:

\[c_k\times (S_{r-1}-S_{l-1}+\min(S_{k-1}-S_{l-1},S_{r-1}-S_{k-1})) \]

可以发现的是存在一个临界点 \(d\) 使得 \(l\ge d\) 时后面贡献是 \(S_{k-1}-S_{l-1}\),否则是 \(S_{r-1}-S_{k-1}\),那么其实你发现就是两端分段一次函数,自变量就是 \(S_{l-1}\)。可以发现的是 \(l\) 是越小越好的,所以如果 \(L\ge d\),直接取 \(L\),否则还要跟 \(d\) 判断一下。

那么我们可以考虑把笛卡尔树上的节点从深往浅进行处理。每次一个节点即加入两条直线,注意这里的直线是存在自变量取值范围的。然后我们想查的其实就是被包含的节点的左节点子树内所有节点李超树上的 \(S_{L-1}\) 位最大值,(临界点 \(> L\) 的可以用线段树单独维护),其实注意到如果我们把查询放在深度上面,在该节点深度 \(+1\) 的位置放这个询问那么直接查就是子树内所有节点了。

复杂度是 \(\Theta(n\log^2 n)\) 的,瓶颈在于李超树一个区间加入直线。

标签:10,le,19,可以,节点,2022,考虑,我们
From: https://www.cnblogs.com/Dark-Romance/p/16808158.html

相关文章

  • 推荐提升效率的4个Windows 10任务栏快捷键
    从Windows95开始到现在的Windows10系统,「任务栏」一直是Windows的重要组成部分和标志,虽然在使用过程中仍时不时会遇到一些奇怪问题,但时至今日无可否认,它在外观......
  • 20221019
    20221019每日一遍,清醒一点......
  • 瑞吉外卖 19日
    实体类实现Serializable的作用Serializable,之前一直有使用,默认的实体类就会实现Serializable接口,对具体原因一直不是很了解,同时如果没有实现序列化,同样没什么影响,什么时候......
  • 2022-10-19 mysql 查询中found_rows没有返回正确的总数据量 limit
    查询语句中使用了limit来进行分页,本打算是1页返回10行数据,满足条件的数据有15条,使用了limit后再用found_rows查总符合数据,却只得到了10条,而不是15条,证明查询语句不严谨。......
  • 10.19总结
    [2022-51nod赛前模拟]csp-s第6套-T1题目描述给出一个n个点m条边的有向图,顶点编号1到n,边的编号为1到m。你可以选择一些边进行反转(即从u到v的边反转后变......
  • 2022年10月19日
       踏踏实实,脚踏实地,一步一个脚印,慢慢变好,惊艳自己;做自己的摆渡人,自己是自己最大的贵人,自己是自己最强大的人脉;人的潜力无限;强者自愈;  境由心转,心态好了,一切顺顺......
  • “烦人的催人精”-强有力的推动者(中)(2022年10月8日-10月14日)
        项目排期细节要不要公开?公开以后是仅供参考还是人人是项目经理?非链路延期要不要同步?延期细节要不要事事俱到?事外人轻松发言,局内人如何应对?......    ......
  • DFS练习: POJ1010 POJ1011 POJ1020 POJ1321 POJ1416 POJ1724
    POJ1010packagepoj1010;importjava.util.Arrays;importjava.util.Scanner;/***@Authorjinjun99*@DateCreatedin2022/10/418:11*@Description*@S......
  • CF1000E We Need More Bosses
    WeNeedMoreBosses题面翻译题目大意:给定一个\(n\)个点\(m\)条边的无向图,找到两个点\(s,t\),使得\(s\)到\(t\)必须经过的边最多(一条边无论走哪条路线都经过ta,这条边就......
  • 2022.10.19期中
    1.数据导入 loaddatalocalinpath'/opt/module/ceshi.csv'intotabledata; 2.数据清洗 insertoverwritetablesale2selectdate_add('2022-10-00',ca......