首页 > 其他分享 >2024.3 记录

2024.3 记录

时间:2024-03-10 19:56:53浏览次数:42  
标签:2024.3 log 记录 复杂度 le sum dis

3.5

vp 了一场 edu,过了四题,但是 D 题有 *2100,自我感觉还行。

这里写一下后三题的题解。

CF1913D Array Collapse

数字互不相同,先上个单调栈求出每个点的支配区间。

考虑 dp,\(f_i\) 表示只考虑 \([1,i]\) 时的方案数,找到最靠左的 \(j\) 满足 \([j,i]\) 间不存在小于 \(p_i\) 的数,那么 \([j,i-1]\) 这些位置的 dp 值都能转移到 \(f_i\)。

除此之外,以 \(j-1\) 结尾的最长上升子序列也都能转移到 \(f_i\),因为这些位置与 \(i\) 之间的数一定可以被删去。

随便优化下转移就能做到 \(O(n)\)。

提交记录

CF1913E Matrix Problem

考虑一个显然但错误的建模方式:每行每列建一个点,\(S\) 向每行连容量 \(a_i\) 费用 \(0\) 的边,每列向 \(T\) 连容量 \(b_i\) 费用 \(0\) 的边,\(i\) 行向 \(j\) 列连容量 \(1\) 费用为矩阵 \(i\) 行 \(j\) 列的数取反的边。

至于为什么错误,因为我们矩阵中原来的 \(1\) 对应了一条费用为 \(0\) 的边,为了使费用最小我们肯定会优先流 \(1\) 而不流 \(0\),如果某行某列有多于限制数量的 \(1\) 也不会改回 \(0\),也就是说求出来的相当于是“至少”而不是“恰好”的答案。

考虑先将矩阵全都变成 \(0\),然后原来费用为 \(0\) 的边改成 \(-1\)(相当于把对 \(1\) 的取反撤销),这样就流对了。

提交记录

CF1913F Palindromic Problem

考虑求出 \(f_{i,c}\) 表示将 \(s_i\) 的字符改成 \(c\) 之后回文子串数量的变化量,有了这个输出答案就是一些无聊的分讨。

先考虑什么时候改字符会增加,假设有一个回文中心 \(i\) 和回文半径 \(r\)(这里是子串长为奇数的情况,偶数是类似的),那么只有使 \(s_{i-r}\) 和 \(s_{i+r}\) 字符相同时才会有新的贡献,注意贡献不止是 \(1\),应该再加上后缀 \([i+r+1,n]\) 与翻转后的前缀 \([1,i-r-1]\) 的 \(lcp\)。

然后再考虑什么时候会减少,显然更改一个字符会使所有原先经过它且不以它为中心的回文子串消失,只需要求出每个位置被多少回文子串经过即可,这个枚举回文中心后贡献是一个等差数列的形式,可以二阶差分维护。

然后就做完了,这里求 \(lcp\) 用的是后缀数组,时间复杂度 \(O(n\log n+n|\Sigma|)\)。

提交记录

晚上学了下 Hall 定理。

CF338E Optimize!

\(b\) 的顺序显然不影响匹配,由于有不等式的限制不难想到先将 \(b\) 排序。

单独看 \(a\) 的一段长度为 \(m\) 的子区间,设 \(f(i)\) 表示 \(b_i\) 能匹配的集合,根据 Hall 定理,存在完美匹配需要满足对于任意的 \(k\le m\),任取 \(1\le i_1<i_2<\ldots<i_k\le m\),都有 \(|f(i_1)\cup f(i_2)\cup \ldots\cup f(i_k)|\ge k\)。

因为 \(b\) 排序过,所以任意的 \(i<j\) 均有 \(f(i)\subseteq f(j)\),显然上式成立等价于 \(|f(k)|\ge k\)。

线段树维护 \(|f(i)|\),初始令第 \(i\) 个位置为 \(-i\),每加入一个 \(a_i\) 相当于做一个区间加,满足条件相当于全局最小值非负,这都是好维护的。

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

提交记录

3.6

CF1930F Maximize the Difference

见我的洛谷专栏

ABC235G Gardens

直接容斥,枚举至多 \(k\) 个盒子有球。

\[\sum_{k=0}^n(-1)^{n-k}\binom{n}{k}(\sum_{i=0}^A\binom{k}{i})(\sum_{i=0}^B\binom{k}{i})(\sum_{i=0}^C\binom{k}{i}) \]

内层的组合数求和是典中典,可以直接地推,然后就 \(O(n)\) 做完了。

提交记录

CF1863F Divide, XOR, and Conquer

牛逼的思路。

看见 \(n\le 10^4\),我们直接一反常规,考虑区间 dp:记 \(dp_{l,r}\) 表示区间 \([l,r]\) 是否能被保留。

然后有个显然的 \(O(n^3)\) 做法,这里不多赘述。

设 \(sum_{l,r}\) 表示区间 \([l,r]\) 的异或值,\([l,r]\) 能被保留当且仅当存在一个更大的可保留区间 \([L,R]\)(需要满足 \(L=l\) 或 \(R=r\)),满足 \(sum_{l,r}\oplus sum_{L,R}\le sum_{l,r}\),这步根据题面显然成立。

一个小性质:\(x\oplus y\le x\) 当且仅当 \(x\) 在 \(y\) 的最高位上是 \(1\)。

设 \(L_i\) 表示所有被保留的左端点为 \(i\) 的区间,它们的异或和的 \(\rm higbit\) 取值集合(用个 long long 存),同理定义 \(R_i\) 为所有被保留的右端点为 \(i\) 的区间,\([l,r]\) 能被保留就相当于是 \(sum_{l,r}\) 与 \(L_i\) 或 \(R_i\) 按位与的结果不为 \(0\)。

于是做到了 \(O(1)\) 转移,时间复杂度 \(O(n^2)\)。

当然上面的讨论都是基于区间异或和大于 \(0\),等于 \(0\) 和谁拼一块都行,注意特判。

提交记录

3.7

CF1930E 2..3...4.... Wonderful! Wonderful!

注意到删除的数字数量 \(x\) 一定为 \(2k\) 的倍数,因此枚举 \(k,x\) 是调和级数的复杂度。

记保留为 \(0\),删除为 \(1\),相当于是对一个 \(01\) 序列计数。

一个结论是,合法当且仅当至少存在一个 \(0\) 两边 \(1\) 的个数都至少为 \(k\),归纳易证。

还是不太好数,考虑容斥,用总数 \(\binom{n}{x}\) 减去不存在合法 \(0\) 的情况。

初始一个长为 \(x\) 的全 \(1\) 串,插入 \(n-x\) 个 \(0\),那么这些 \(0\) 只能插在两边 \(k-1\) 个 \(1\) 旁,否则一定就有合法的 \(0\),一共有 \(2k\) 个合法的位置,直接隔板即可。

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

提交记录

P5590 赛车游戏

这么你哦。

边权不好定,考虑限制整个路径长度。

记 \(dis_i\) 表示 \(1\) 到 \(i\) 的最短路,发现只要每条边 \((u,v)\) 都满足 \(1\le dis_v-dis_u\le 9\) 就能构造出合法答案,否则一定存在一条长不相同的路径(注意当边不在任何一条 \(1\) 到 \(n\) 的路径上时不应被考虑)。

然后对这个限制跑差分约束即可,时间复杂度 \(O(nm)\)。

提交记录

ABC232G Modulo Shortest Path

见我的洛谷专栏

P3530 [POI2012] FES-Festival

先建立差分约束图,判断是否有解。

对差分约束图按强连通分量缩点,由于不同 SCC 之间的距离可以无限拉大,不同 SCC 之间答案独立。

对于每个 SCC,找到其内部的点对 \(u,v\) 满足 \(dis_{u,v}\) 最大(\(dis_{i,j}\) 表示 \(i\) 到 \(j\) 的最短路),那么这个 SCC 答案就是 \(dis_{u,v}+1\),将所有 SCC 答案加起来即可。

比较感性的理解就是因为边权只有 \(1,0,-1\) 三种,\(dis_{u,v}\) 之间的数一定能取遍。

时间复杂度 \(O(n^3)\),因为要跑 Floyd。

提交记录

3.8

CF960H Santa's Gift

见我的洛谷专栏

3.9

CF1879F Last Man Standing

显然,\(x>\max a_i\) 是无意义的,且第 \(i\) 位玩家坚持的回合数一定为 \(h_i\lceil\frac{a_i}{x}\rceil\)。

考虑枚举 \(x\),对于每个 \(x\) 我们只需要求出来坚持回合数最大和次大的玩家即可。

再用一个调和级数的复杂度固定 \(\lceil\frac{a_i}{x}\rceil\),那么此时 \(a_i\) 取值范围就是一个区间,在一定的值域范围内回合数就只和 \(h_i\) 相关了,只需要维护出 \(h_i\) 的最大值和次大值即可。

这题卡常,必须严格 \(O(n\log n)\),考虑 ST 表维护 \(h_i\) 的最大值和次大值即可。

注意 ST 表要维护下标,因为直接合并最大值和次大值是错的。

提交记录

3.10

CF1902F Trees and XOR Queries Again

有一个经典的做法,考虑线性基的合并是可重的,将询问 \((x,y)\) 拆成 \(x\) 到 \(lca\) 和 \(lca\) 到 \(y\) 两段,每段像 ST 表那样倍增拆成两个可重区间合并即可,由于线性基合并是 \(O(\log^2 V)\) 的,这个做法是三个 \(\log\),能不能过不好说。

更优的做法是考虑点分治,维护出连通块内每个点到分治中心上的线性基即可,每次回答跨过当前分治中心且完全位于当前连通块内的询问即可,复杂度 \(O(n\log n\log V)\)。

提交记录

CF1059E Split the Tree

见我的洛谷专栏

标签:2024.3,log,记录,复杂度,le,sum,dis
From: https://www.cnblogs.com/los114514/p/18064682

相关文章

  • ARC083 vp记录
    有操作的操作场,考场过了ABC(3/4)A.SugarWater题意:一个杯子,可以容纳\(F\)克糖水,一开始是空的。每次操作:加入\(100A\)克水加入\(100B\)克水加入\(C\)克糖加入\(D\)克糖每\(100\)克水最多溶解\(E\)克糖,求任意次操作后完全溶解的糖水中的最大含糖量,以......
  • 2024.3.9 - 3.15
    SatLGR-176(Div.2)A.区间和问题,一眼盯真:前缀和。B.bfs,顺便记一下转移方向。C.最小化最大值,二分答案,用点DS实时维护逆序对即可,笔者用了线段树。D.区间DP,预处理一下\(a_i^{a_j}\)的值,然后记\(f_{l,r,0/1}\)表示到达了\([l,r]\)区间,并且最后一步是取了头部/尾部到达该......
  • 记录一个报错信息:Name for argument of type [java.lang.Integer] not specified, and
    报错如下:错误复现代码如下:@GetMapping("/consumer/pay/getById/{orderId}")@Parameter(name="orderId",description="订单id",in=ParameterIn.PATH)publicRgetOrder(@PathVariableIntegerorderId){System.out.println(o......
  • PicGo使用简明教程及踩坑记录
    PicGo使用简明教程及踩坑记录PicGo使用我现在用的博客的记录方式是Typora+PicGo+阿里云oss,这一套配置好后就非常方便了,可以快捷上传图片到云服务器,并且阿里云的速度也是我试过的几个云服务器里面最快的,价格也便宜,如果博客只有少量人看那基本上就跟不用钱一样,每个月就几毛。整套......
  • 3月板刷ARC记录
    ARC058F考虑背包,记\(f_{i,j}\)表示考虑前\(i\)个串,取出长为\(j\)的最小串。由于涉及字典序比较,时间复杂度为\(\mathcalO(nk^2)\)。字典序比较不同于计算式比较,找到\(LCP\)后第一位即可得出结果。考虑仅保留能转移到\(f_{n,k}\)的\(f_{i,j}\)。对于\(f_{i,j1},f......
  • 2024.3.9 笔记
    2024.3.9笔记P1948题目大意为在无向图上求出从\(1\)到\(N\)的路径,使路径上第\(k+1\)大的边权尽量少。第一种是DP用\(f[i][j]\)表示从\(1\)到点\(i\),用了\(j\)条免费线的最小花费。对于一条\(u->v\)的边\(e\)有转移:不用免费线\(f_{v,k}=min(f_{v,k},max......
  • Mysql 学习记录 #01
    Mysql学习记录#01表的基本操作--创建表CREATETABLEIFNOTEXISTS`student`( `id`INT(4)NOTNULLAUTO_INCREMENTCOMMENT'编号', `name`VARCHAR(30)NOTNULLDEFAULT'匿名'COMMENT'姓名', `pwd`VARCHAR(20)NOTNULLDEFAULT'123456�......
  • 记录一个利用数据库引擎格式化异常sql的思路
    这个思路主要解决MySQL中的科学记数法漏洞使AWSWAF客户端易受SQL注入攻击这篇文章中的问题目前基本上都使用阿里巴巴的druid并开启sql防火墙模式以语义层面拦截sql注入,如果极端情况下对sql解析结果不一致还是会产生sql注入于是尝试了一下mysql自带的功能1)EXPLAIN2)optimi......
  • 2024-03-08 leetcode写题记录
    目录2024-03-08leetcode写题记录27.移除元素题目链接题意解法179.最大数题目链接题意解法75.颜色分类题目链接题意解法2024-03-08leetcode写题记录27.移除元素题目链接27.移除元素题意给你一个数组\(nums\)和一个值\(val\),你需要原地移除所有数值等于\(val\)的元素,并......
  • 2024.3.7习题总结
    CF1288C题目可以把\(a\)数组和\(b\)数组的倒序合并,这样,题目就成了求出长度为\(2m\)的序列递增的方案数,\(dp\)求解可以把长度为\(2m\)的差分数组。对于任意一个\(c_i\),\(c_i\ge0,\sumc_i\len\),所以方案数为\(C_{n+2*m-1}^{2*m}\)CF1569C......