首页 > 其他分享 >1020 周总结

1020 周总结

时间:2024-10-19 17:42:43浏览次数:1  
标签:总结 1020 菊花 然后 枚举 即可 我们 dp

之前一天联考一篇查找一个题太史了,按月 merge 了一下。

现在在这里:https://www.cnblogs.com/Nityacke/p/18475669

CF1474F

首先仿照划艇的做法,把值域离散化,然后考虑 dp,我们表示在第 \(i\) 个段,填值域 \(j\),的情况 \(f_{i,j}\),然后转移可以组合数计算,时间复杂度 \(O(n^5)\)。

CF1804E

问题等价于我们找一个环,使得所有点和环相邻,状压 dp 即可,时间复杂度 \(\mathcal O(n2^n)\)。

CF1225G

我们不难发现,因为 \(k\nmid a_i\),所以最后每个数的贡献可以写成 \(a_ik^{-b_i}\) 的形式,然后我们状压然后 bitset 优化即可。

CF1188D

先排序,然后不妨假设最后所有数都是 \(x+a_n-a_1\),那么我们就需要 \(\sum popcount(x+a_n-a_1)\) 最小,仔细一看,这不是我们 ARC153D 吗,然后直接做就好了。

复杂度 \(O(n\log V\log n)\)。

CF1408H

线段树模拟最小割。

首先我们考虑怎么建图,首先我们设 \(0\) 的个数是 \(n0\)。

则我们按第 \(\frac {n0}2\) 个 \(0\) 的位置分组,则我们右边的点向右边第一个 \(0\) 连边,左边的点向左边第一个 \(0\) 连边。

然后考虑颜色的限制,我们发现我们只需要对于每种颜色左边最右边的一个和右边最左边的一个连边即可。

然后我们建出来的图是这样的:

由于最大流等于最小割,不难发现,我们只会割 $S\to $ 或者 \(\to T\) 的边,且是一个前缀一个后缀的形式,我们枚举割了多少条前缀,线段树维护每条后缀时的答案即可。

CF1648E

按边权排序,枚举补图边权最大值,然后启发式合并维护有哪些连通块合并,最后在建出来的树上查询最大值即可,复杂度甚至是 \(\mathcal O((n+m)\log n)\)。

CF1085G

设 \(f_{i,j}\) 表示长度为 \(i\) 的排列 \(a\),有 \(j\) 个位置满足 \(a_x\not= x\) 的方案数,不难发现 \(f_{i,i}\) 就是错排数量。

考虑如何转移,枚举最后一个不受限制的数放在哪里:

\[f_{i,j}=jf_{i-1,j-1}+(i-j)f_{i-1,j} \]

先枚举前缀相同的长度,对于第一行,康托展开一下,后面的系数是 \(f_{n,n}^{n-1}\)。

然后对于后面的,我们相当于计算后面还有多少个数小于当前位置,以及多少个是不能满足限制的,树状数组维护这些数的个数即可。

CF1712F

奇妙的题目,首先对于问题变成询问 \(\min(X+f_u+f_v,dis(u,v))\) 的最大值。

然后如何计算,我们设 \(dp_{x,i}\) 表示 \(x\) 子树内,\(f_u=i\) 的最大的 \(dep_u\),不难发现这个是单调的,假设现在答案是 \(ans\),枚举 dp 数组大小更小的 \(f_v\),则我们需要满足 \(f_u \ge ans+1-X-f_v\),然后判断这个 dis 是否满足即可。

复杂度 \(O(nq)\)。

CF1477D

人类智慧,根本想不到。

呜呼,无法可想!

首先对于度数为 \(n-1\) 的点,不难发现我们定向之后他的位置就确定了,不妨把这些都扔到最后面。

所以现在就没有度数为 \(n-1\) 的点了。

然后人类智慧出现了:我们从补图考虑。

首先对于一个菊花,那么我们就可以在 P,Q 中分别把根定为 \(1,n\),然后剩下的点分别变成 \(2,3,\ldots n\) 和 \(1,2,\ldots n-1\) 即可,此时我们可以做到所有的 P,Q 不等。

然后我们考虑,如果能把这个补图剖成若干菊花即可。

考虑依次加点,如果新加的这个点连接的所有点中所有点都没有被划分过,那么就可以把这个点和它连接的点划分成一个菊花。

如果有一至少一个点被划分过,我们可以随便找出一个点,设为 \(x\)。

首先,\(x\) 一定不是它所属菊花的根,否则当前点也会被划分到这个菊花。

那么如果这个菊花内有大于 \(2\) 个点,那么就把 \(x\) 从原本的菊花中删了,并和当前点构成一个新的菊花。

如果恰好有 \(2\) 个点,那么可以把那个菊花的根变成 \(x\) ,并把当前点划分到这个菊花内。

AT_arc184_d

转化我们计数的条件,变成计数有多少个集合 \(S\),满足 \(S\) 加上任何一个不属于 \(S\) 的点就会删除一个点,这个可以直接 dp 即可。

AT_arc125_f

首先我们把每个点度数 \(-1\),则我们可以证明此时每种度数和选出的数的个数是连续的,证明略去,然后就可以 \(O(n\sqrt n)\) 背包即可。

AT_agc039_e

很神秘的题,首先枚举 \(1\) 和哪个点相连,设其为 \(k\),然后我们考虑设计 dp 状态,设 \(f_{l,r,k}\) 表示区间 \([l,r]\) 其中 \(k\) 往外面的点 \(K\),有一条边的方案数。

我们枚举和 \((K,k)\) 有交的最大的一条线 \((x,y)\),则我们存在两个点 \(p,q\) 满足 \([l,p]\),\([q,r]\) 是跨过 \((x,y)\) 的,所以就变成了 \(f_{l,p,x},f_{p+1,q-1,k},f_{q,r,y}\),转移即可。

AT_arc068_d

我们首先考虑这个双端队列什么样子,不难发现就是形如这个样子:

然后我们忽略最后 \(n-k\) 个数,有 \(2^{n-k-1}\) 种方法。

所以我们取出来的数列一定可以被划分成不超过 \(2\) 个下降子序列,且第 \(k\) 个数是 \(1\)。

由于 Dilworth 定理,所以我们知道最长上升子序列长度不超过 \(2\),且第 \(k\) 个数是 \(1\)。

我们考虑逆排列,则我们满足相同的规则,我们设 \(f_{i,j}\) 表示长度为 \(i\) 的且第一个数是 \(j\) 的序列个数,则我们考虑转移:

\[\begin{aligned} f_{i,j}=f_{i-1,j}+\sum_{k<j}f_{i-1,k}(j<i)\\ f_{i,i}=\sum_{j<i}f_{i-1,j}\\ \end{aligned} \]

此时我们就可以做到 \(O(n^2)\)。

考虑我们重新写一下转移:

\[f_{i,j}=f_{i,j-1}+f_{i-1,j}(j<i)\\ f_{i,i}=f_{i,i-1} \]

然后我们不难发现这个东西形如从 \((1,1)\) 走到 \((n,k)\),但是不能经过 \(y=x+1\)。

容斥一下得到方案数是:\(\binom {n+k-2}{n-1}-\binom {n+k-2}n\)。

然后就做完了。

标签:总结,1020,菊花,然后,枚举,即可,我们,dp
From: https://www.cnblogs.com/Nityacke/p/18476669

相关文章

  • 【MySQL基础刷题】总结题型(二)
    最多10题,再多不消化了1.至少有5名直接下属的经理2.销售员3.订单最多的客户4.计算布尔表达式的值5.查询球队积分6.苹果和桔子7.两人之间的通话次数8.确认率9.各赛事的用户注册率1.至少有5名直接下属的经理注意左连接的使用selecte1.namefromEmployeee1leftjoi......
  • webstorm前端vue项目安装依赖包总结
    npminstall提示错误信息,与node.js版本有关。以下是用到的一些命令行参数:1、清除npm的缓存:npmcacheclean--force2、设置npm下载镜像:npmconfigsetregistryhttps://registry.npmmirror.com如果下载过程中部分包提示联网访问失败404,可以修改package-lock.json文件地址到镜......
  • 2024-2025-1 20241407《计算机基础与程序设计》第四周学习总结
    这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第四周作业这个作业的目标学习门电路,组合电路,逻辑电路,冯诺依曼结构,CPU,内存,IO管理,嵌入式系统,并行结构,物理安全作业正文https://www.cnblogs.com/wangyih......
  • 前端HTML+CSS+JS总结 我的学习笔记
    前端HTMLCSSJS总结一、HTML1.HTML介绍2.基础标签3.图片、音频、视频标签4.超链接标签5.列表标签6.表格标签7.布局标签8.表单标签二、CSS1.CSS概述2.CSS导入方式3.CSS选择器三、JavaScript1.JavaScript简介2.JavaScript引入方式3.JavaScript基础语法书写语法输......
  • C#中跨线程调用的方法一点总结
    引言在图形用户界面(GUI)应用程序开发中,多线程编程已成为不可或缺的一部分。通过使用多线程,开发者可以在后台执行耗时任务,同时保持用户界面的响应性。然而,多线程编程也带来了复杂性,尤其是在处理用户界面(UI)控件时。由于UI控件通常不是线程安全的,直接从非UI线程访问或修改它们可能......
  • shell脚本总结
    生成菜单法1:#!/bin/bash#定义颜色变量RED='\033[1;31m'GREEN='\033[32m'YELLOW='\033[33m'BLUE='\033[34m'NORMAL='\033[0m'PS3=`echo-e"${GREEN}请选择一个选项:${NORMAL}"`options=("选项1""......
  • 数据链路层知识点总结2
    目录前言一、什么叫做传统以太网?以太网有哪两个主要标准?二、试说明10BASE-T的“10”“BASE”和“T”所代表的意思三、以太网交换机有何特点?用它怎么样组成虚拟局域网?四、以太网使用CSMA/CD协议是以争用方式接入到共享信道的,这与传统的时分复用TDM相比有何优缺点总结......
  • oracle 11g常用运维命令总结
    一、日常巡检命令1、检查Oracle实例状态SQL>setpages600lines600SQL>selectinstance_name,host_name,startup_time,status,database_statusfromv$instance;说明:“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状......
  • LeetCode题练习与总结:最大单词长度乘积--318
    一、题目描述给你一个字符串数组 words ,找出并返回 length(words[i])*length(words[j]) 的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回 0 。示例 1:输入:words=["abcw","baz","foo","bar","xtfn","abcdef"]输出:16解释:这两个单词为"abc......
  • LeetCode题练习与总结:灯泡开关--319
    一、题目描述初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭第二个。第三轮,你每三个灯泡就切换第三个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换第 i 个灯泡的开关。直到第 n 轮,你只需要切换......