首页 > 其他分享 >2023.8.23 近期练习

2023.8.23 近期练习

时间:2024-08-23 14:47:50浏览次数:7  
标签:那么 23 复杂度 练习 times 区间 2023.8 我们 dp

CF1677E

本题转化之后就是矩阵覆盖,矩阵查询被覆盖的点数。现在将讲解线段树如何实现这个。
扫描线的话将转化为求区间为 \(0\) 个数的历史和,历史和是很难的。
注意到我们每次把当前序列加入历史和去也就是把区间为 \(0\) 的位置加 \(1\)。
所以我的想法是在线段树节点上加一个标记 tms 表示当前区间还需要被累加进历史和多少次。
我们总共有两个标记,tag 是表区间加,tms 表区间累加,我们不妨先 tag 后 tms。
注意到如果当前有 tms,有 tag 来之后,需要 pushdown.
然而这真的是太蠢了,我们观察性质,注意到如果矩阵有交那么他们一定有同一个 \(\max\)。
所以我们对于每个 \(\max\),做好容斥即可。不妨树状数组解决。
具体地,我们还是要维护历史和,但是我们可以差分,在第 \(i\) 个版本插入时贡献乘上 \(n-i\)。

AGC016E

我们想到可以从底往上推。初始有一个 \(O(n^2m)\) 的做法,我们枚举答案,然后自底往上推。
维护一个集合 \(S\) 表示当前必须存在的元素。那么如果当前遇到 \((i,j),i,j\in S\),那么就非法。
否则,对于 \((i,j)\) 存在一个数 \(\in S\) 的,那么把另一个数加入 \(S\)。
不妨只枚举 \(x\) 只让 \(x\) 从底往上推,那么 \(x,y\) 合法的话,首先要他们分别合法。
其次,对于每个时刻,\((i,j)\) 不能在两个集合里分别存在。直接模拟该过程判断还是 \(O(n^2m)\)。
我们想,若 \((i,j)\) 分别位于两个集合了,那么最后的 \(i,j\in S_x,S_y\),所以只需要判断 \(S_x\cap S_y\) 非空。

AGC044C

我们猜是字典树。但是我们建的不是常规的 01-trie,而是三进制字典树。
12 交换的操作我们很容易实现,直接打 tag 即可,代表当前节点需要交换 12。
然而全局 \(+1\) 的操作呢?如果我们按照普通的从高位建到低位,发现是很难实现。
所以这启发我们从低到高建字典树,每次我们就轮换 012。
发现 12 儿子是没有变化的,我们递归 0 儿子,发现这个 0 儿子进位 \(1\) 也是要实现轮换 012。
所以直接沿着 0 这条链递归下去即可。

CF643E

惨遭诈骗。由于最后答案是输出浮点数,而浮点数精度有限,所以我们不妨少维护一点。
我们拆贡献的时候,深度 \(\ge 50\) 的概率我们直接忽略,因为这里的值太小了。
所以我们记 \(f_{u,d}\) 表示 \(u\) 子树内深度为 \(j\) 的概率。那么考虑容斥,\(1-f_{u,d}=\prod (1-\frac{1}{2}f_{v,d-1})\)。
当我们新加入一个点的时候,向上更新 \(50\) 个祖先即可。

CF48F

这个题非常抽象啊。先把 \(n\) 天独立开来。
发现如果我们把 \(m\) 种商品都拿出来排序后贪心就行了,但是排序需要 \(\log n\) 是不行的。
考虑二分,每次找第 \(mid\) 大的数出来,看看 \(\le mid\) 的是否超过 \(w\),按这个二分下去。
利用 nth_element 是线性的,而且我们每次规模是减半的,所以 \(T(n)=T(\dfrac{n}{2})+n\)。
那么复杂度 \(O(nm)\)。为了精度可以整数与小数分开。

AGC026D

观察到已知一行,再填下一行有只有不超过两种填法,当且仅当上一行红蓝交错时有两种。
于是我们在笛卡尔树上 dp,存两个状态,代表交错的方案数和不交错的方案数。

P10013 [集训队互测 2023] Tree Topological Order Counting

我们显然要求的是所有 \(u,k\),点 \(u\) 在拓扑序上排第 \(k\) 的方案数。
我们可以对于每个 \(u\) 往上跑一遍直到根,顺便维护 \(f_k\) 表示当前子树内,\(u\) 排第 \(k\) 的方案数。
做类似背包的合并。设从 \(v\) 转移到 \(fa_v=u\),排名 \(k_1\) 转移到排名 \(k_2\),
若 \(u\) 除去 \(v\) 子树后拓扑序的个数为 \(g\),那么系数是 \(C_{k_2-1}^{k_1-1}\times C_{siz_u-1-k_2}^{siz_v-k_1}\times g\)。
最后因为 \(u\) 要排在前面,所以 \(k_2\) 要加上 \(1\)。
一个 \(u\) 复杂度是 \(O(n^2)\),总的复杂度是 \(O(n^3)\)。
注意到对于 \(x\to fa_x\) 这种转移系数都是一样的,对于 \(x\) 子树内的 \(u\) 都可以转移。
所以我们可以从根开始往下做。考虑同时对所有 \(u\) 转移。
可以将状态的转移看做有向图,转移系数看做边,我们所求的是所有路径的积的和。
对于 \(dp_{1,k}\),我们将其在连一条边到源点,边权为 \(b_i\) 即可。
交换起点和终点,我们原来求的是 \(dp_{u,1}\to dp_{1,k}\) 的所有路径,我们不妨求所有 \(dp_{1,k}\) 到 \(dp_{u,1}\) 的路径。
那么我们把这个有向图反过来就行了。对于 \(u\) 点的答案即为 \(f_{u,1}\times g_u\)。

P10008 [集训队互测 2022] Range Minimum Element

考虑建立 \(a\to b\) 的双射关系,题目中已经有 \(a\) 生成 \(b\) 的方式,现在考虑从 \(b\) 生成 \(a\)。
我们现在已知 \(b\),\(b\) 从大到小,设当前权值为 \(x\),每次把对应的 \(a\) 区间里的没有被填的数全部设为 \(x\)。
如果不存在还没有被填的数并且没有 \(x\),那么 \(b\) 就是不合法的,但是我们可以继续构造出 \(a\)。
如果最后还有未填的数设为 \(1\)。
那么,每个合法的 \(b\),都有唯一的 \(a\) 与其对应。
如果是不合法的 \(b\),也有 \(a\) 与其对应,并且,这个 \(a\) 是可以由一个合法的 \(b\) 生成而来。
只需要把不合法的那个 \(x\) 换成上一个 \(x\) 即可。
那么现在我们计数 \(a\),使得 \(a\) 是可以被 \(b\) 构造出来的。
考虑区间 dp,每次找最左的 \(a_i=1\) 出来,那么 \([1,i-1]\) 的区间已经被填满,即并集为 \([1,i-1]\)。
而且越过 \(i\) 的区间,满足 \(x=1\),我们之后可以不管了。
在 \([1,i-1]\) 这个区间,最小值一定 \(\ge 2\)。在 \([i+1,n]\) 这个区间,我们重复找最左的 \(a_i=1\)。
如果找不到 \(a_i=1\) 呢?那么我们可以找 \(a_i=2\),继续找罢了。
具体地,设 \(dp_{l,r,p}\) 表示区间 \([l,r]\),满足最小值 \(\ge p\) 的方案数。同时设 \(I_{l,r}\) 表示 \([l,r]\) 并集是否填满。
那么 \(dp_{l,r,p}=I_{l,r}\times dp_{l,r,p+1}+\sum_{i\in[l,r]} dp_{l,i-1,p+1}\times dp_{i+1,r,p}\times I_{l,i-1}\)。
但是 \(c\) 有点大,由于 dp 的转移过程是简单加乘,所以最后的答案是一个 \(n\) 次多项式,不妨插值。
复杂度 \(O(n^4)\)。

P3270 [JLOI2016] 成绩比较

考虑二项式反演,先钦定 \(j\) 个人被碾压。其贡献是 \(C_{n-1}^j\)。
每门课是独立的,考虑某门课,枚举 B 神的分数 \(x\),贡献是 \(\sum_{x=1}^Ux^{n-R}\times (U-x)^{R-1}\times C_{n-j-1}^{R-1}\)。
只需要把每门课的贡献乘起来即可。
然而课程的贡献计算复杂度基于值域,而这是个 \(n\) 次多项式,不妨插值。

P2048 [NOI2010] 超级钢琴

这是典题。堆里维护每个右端点,左端点还剩哪些区间可以取,每次取出 rmq,然后分割区间。
因为 \(k\) 很小,所以取 \(k\) 次即可。

标签:那么,23,复杂度,练习,times,区间,2023.8,我们,dp
From: https://www.cnblogs.com/Simon-Gao/p/18375990

相关文章

  • 239. 滑动窗口最大值
    题目描述给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。解题思路这里我们可以自己设计个队列,这个队列里面主体数据结构我们使用Java里的De......
  • 8.19 ~ 8.23
    8.19上午模拟赛。看T1。给出两个数\(a\),\(b\),问能否找到两个非负整数\(x\)和\(y\)使得\(x+y=a\)且\(x\\operatorname{and}\y=b\)。样例:in:21842out:YesNo...不是第一组为啥是Yes啊能有负数?哦\(-7\\operatorname{and}\8=8\)啊;好了,现在不会做......
  • 【2024-08-23】邬贺铨院士:大模型赋能企业数字化转型
    一、AI的演进之路:从生成式AI到通用A1二、大模型的构建与应用:自建与协作开发的行业大模型2.1自建基础大模型2.2合作开发行业大模型三、对MaaS及其工具链的探索四、大模型推动云服务创新4.1大模型时代对算力网络的要求4.2大模型推动IaaS创新发展......
  • 2024.8.23 模拟赛总结
    A.distStatement:给定一棵\(n(n\le10^6)\)个节点带边权的树,定义\(\mathrm{Min}(x,y)\)是\((x,y)\)路径上的边权最小值。求\(\max_{r=1}^n{\sum_{v\nei}\mathrm{Min}(r,v)}\)。Solution:经典套路题。首先注意到一条路径上的只有最小值才会产生贡献,于是对于......
  • P9145 [THUPC 2023 初赛] 世界杯
    [题目通道]([THUPC2023初赛]世界杯-洛谷)简要题意:输出五常中的最强球队。众所周知,每个国家的球队都有自己的长处,在不同规则下最强球队也有所不同。而小M制定的规则是输球场数最少,这是有道理的,因为输球场数可以评判一个球队的稳定性。输球场数越少,就说明稳定性越强,实力......
  • 代码随想录DAY23 - 回溯算法 - 08/22
    组合总和题干题目:给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回。你可以按任意顺序返回这些组合。candidates中的同一个数字可以无限制重复被选取。如果至少......
  • 代码随想录Day23
    131.分割回文串给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。示例1:输入:s="aab"输出:[["a","a","b"],["aa","b"]]示例2:输入:s="a"输出:[["a"]]提示:1<=s.length<=16s仅由......
  • 【专题】2023-2024中国游戏企业研发竞争力报告合集PDF分享(附原数据表)
    原文链接: https://tecdat.cn/?p=37447 在当今的数字时代,游戏产业已然成为经济与文化领域中一股不可忽视的重要力量。2023年,中国自研游戏市场更是呈现出一片繁荣且复杂的景象,实际销售收入达到了令人瞩目的2563.8亿元,同比增长15.3%,不仅刷新历史纪录,还彰显出其强大的市场活力......
  • java版本12计算2000年1月到2023年6月相差几年
     JDK12版本importjava.time.YearMonth;importjava.time.temporal.ChronoUnit;publicclassYearsBetweenDates{publicstaticvoidmain(String[]args){YearMonthstartYearMonth=YearMonth.of(2000,1);YearMonthendYearMonth=YearMon......
  • 02-HTML&JS相关练习
    1、使用html写一个网页,要求满足以下条件:(1)网页中含有任意一张图片,图片路径使用绝对路径(这里绝对路径无法识别故使用相对路径),鼠标悬停在图片时出现“马哥教育”文本,且点击图片可跳转至马哥教育官方页面(2)网页中包含账号、密码登录,且账号提前定义好是admin且不可更改,输入密码时......