首页 > 其他分享 >省选计划(第六周)

省选计划(第六周)

时间:2023-07-17 23:23:13浏览次数:43  
标签:dbinom 省选 siz 复杂度 第六周 cdot 计划 sum DP

知识回顾

  • 巩固:Lucas,网络流,二分图

  • 深入研究:背包DP,树形DP,区间DP,状压DP。

  • 简单了解/没学明白:博弈论,插头DP

练题

Working routine

读完题后以为矩阵可以相邻,费了一个小时去写...(可恶

直接暴力交换复杂度是 \(O(nmq)\),无法接受,考虑链表。

对于每个点 i,定义 \(right_i\) 为 i 的右继,\(down_i\) 为 i 的下继。

然后把矩阵边缘的那些点的 \(right\) 和 \(down\) 交换一下就好了。

有些小细节。复杂度 \(O((n+m)q)\)。

P8074 [COCI2009-2010#7] SVEMIR

最小生成树题。

考虑分别将 x,y,z 排序,只连相邻的边,总边数 \(3\times n\)。

跑一边 kruskal 就行了。

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

P8564 ρars/ey

很显然的树形背包。

定义 \(f_{i,j}\) 为以 i 为子树,删 j 个子节点的最小代价。

然后列式子卡上下界,经典背包。

复杂度 \(O(n^2)\)。

P2197 【模板】nim 游戏

基础博弈论。

我们考虑将一个集合分为两部分,四种情况讨论:

  1. A 胜,B 胜,AB 不确定。

  2. A 胜,B 负,AB 胜。

  3. A 负,B 胜,AB 胜。

  4. A 负,B 负,AB 负。

可以发现这符合 xor 的性质。

假如先手面对石堆 A,剩下的为 B,那么 A ^ B = S。

其中 A 包含 S 的最高位。

如果 S 不为 0,那么先手一定可以取走一些石头使得 A = B。从而获胜。

如果 S 为 0,那么先手必败。

综上,只需要全部 xor 一遍看是否为 0 即可。

P2734 [USACO3.3]游戏 A Game

博弈论+DP。

定义 \(f_{i,j}\) 为作为先手,在 \([l,r]\) 这个区间里最多能获得的价值。

转移方程显然:

\[f_{i,j}=\max(sum_{i+1,j}-f_{i+1,j}+a_i,sum_{i,j-1}-f_{i,j-1}+a_j) \]

复杂度 \(O(n^2)\)。

P1247 取火柴游戏

在 Nim 游戏的基础上输出先手第一次选取的方案。

我们知道 A ^ B = S,且 A 包含 S 的最高位,所以先手第一次要选 A - B 个。

找到最前面的即可。

P2252 [SHOI2002]取石子游戏|【模板】威佐夫博弈

神奇的博弈论板子。

我们称后手必胜态为奇异局势。那么前几个为:

\((0,0),(1,2),(3,5),(4,7),(6,10),(8,13)\)。

可以发现第 i 个(编号从 0 开始)两者的差为 i,且第一个元素为前 i-1 组的 mex。证明略。

然后需要用到 beatty 定理:

设 a、b 是正无理数且 \(\frac{1}{a}+\frac{1}{b}=1\)。记\(P=\lfloor an\rfloor\),\(Q=\lfloor bn\rfloor\),其中 n 为任意正整数,则 P 与 Q 是 N+ 的一个划分。

证明略......

于是我们令第一个元素为 \(\lfloor an \rfloor\),第二个元素为 \(\lfloor (a+1)n\rfloor\)

\[\frac{1}{a}+\frac{1}{a+1}=1 \ (a>0) \]

解得 \(a=\frac{1+\sqrt 5}{2}\)。

所以对于每个询问,我们只需计算出两个数的差,然后根据公式判断第一个元素是否与算出来的相等即可。

P3807 【模板】卢卡斯定理/Lucas 定理

针对模数比较小的组合数运算。

通过推一坨我不懂的式子可以得出:

\[\dbinom{n}{m}\bmod P=\dbinom{\frac{n}{P}}{\frac{m}{P}}\cdot \dbinom{n \bmod P}{m \bmod P}\bmod P \]

对于第二项,由于 n,m 都小于 P,可以直接算出。

对于第一项,继续递归处理。

Christmas Game

Nim游戏+换根DP。

我们定义每个节点的深度为 \(\lfloor \frac{dep_i}{k} \rfloor\),也就是能挪多少次。

如果深度为偶数,则上面的石子不会影响局面,因为挪完后先后手的顺序不变。

如果深度为奇数,则挪完一次后深度变为偶数,相当于选择一部分石子扔掉。

诶!这不就是 Nim 游戏吗。

于是我们可以把深度为奇数的那些石子数异或起来,然后换根DP。

定义 \(f_{i,j}\) 为对于当前节点 i,深度模上 \(2\times k\) 为 j 的子节点的石子数之和。

那么对于当前节点的答案就是 \(\sum\limits_{j=k}^{2k-1}f_{i,j}\),仔细想想就能理解。

然后换根的公式是借鉴题解的,因为我推的太麻烦了,简直不是给人看的......

可以定义临时变量 \(g_i\) 为除去以当前节点 u 为根的子树,剩下部分的答案。

\[g_{(j+1)\bmod 2k}=f_{u,(j+1)\bmod 2k} \land f_{v,j} \]

这里 f 的定义不再是之前的了,变为以其为根的答案。

\[f_{v,(j+1)\bmod 2k}\land=g_j \]

这样就行了。

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

P5999 [CEOI2016] kangaroo

插头DP。

定义 \(f_{i,j}\) 为前 i 个数,分为 j 段,每段互不影响的方案数。

假设 i 不为 s 或 t。

  1. 合并两段:\(f_{i,j}=f_{i-1,j+1}\cdot (j-num)\),其中 num 为 \((i>s)+(i>t)\)。

  2. 新成一段:\(f_{i,j}=f_{i-1,j-1}\cdot j\)

起点和终点的位置唯一,所以 \(f_{s,j}=f_{s-1,j-1}+f_{s-1,j}\),t 同理。

最终答案 \(f_{n,1}\)。

复杂度 \(O(n^2)\)。

P3188 [HNOI2007]梦幻岛宝珠

背包+状压DP。

直接做肯定不行,但是我们发现每个 \(w_i\) 都可以表示成 \(a\times 2^b\) 的形式,而且 a,b,n 都很小。

考虑以 b 分组。

定义 \(f_{i,j}\) 为在 \(2^i\) 这组中,容量为 \(j\times 2^i\) 的情况下,最大价值是多少。

f 可以直接用传统背包解决。

揭晓来考虑怎么将不同的 b 合并起来。

定义 \(g_{i,j}\) 为考虑 0 到 i 这些物品,其中 b 为 i 的物品给 \(j\times 2^i\) 空间,最大最大价值。

怎么借助 f 转移呢?我们可以考虑 i 物品实际上用了多少容量。

\[g_{i,j}=\min(f_{i,j-k}+g_{i-1,2k+(W>>(i-1))\And1}) \]

从高位到低位,k 需要乘 2,然后再加上 i-1 为上原来的容量。

注意,由于 g 的第二维可能很大,可以和 \(10\times n\) 取个 min。

最后输出 \(g_{\log_2m,1}\) 即可。

复杂度 \(O(T\cdot 3000\cdot n^2)\),实际上远小于。

Paint

区间DP。

容易想出一个非常暴力的状态,\(f_{i,j,k}\) 表示把区间 \([i,j]\) 染成颜色 k 的最小操作,复杂度 \(O(n^4)\),直接起飞,考虑优化。

定义 \(f_{i,j}\) 为将区间 \([i,j]\) 染成 \(c_j\) 的最小操作数。

为什么是 \(c_j\) 呢?因为如果是其他颜色,还要改 \(c_j\),不如直接把 \([i,j-1]\) 染成 \(c_j\)。

第一种转移:

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

+1 是因为默认与单个的颜色不同。

第二种转移:

\[f_{i,j}=\min(f_{i,k}+f_{k+1,j}) \]

其中 \(c_k=c_j\)。很显然,无需解释。

复杂度 \(O(20\cdot n^2)\)。常数很小。

P4766 [CERC2014]Outer space invaders

看起来很像是贪心,但仔细想想就会发现不行。

可以尝试区间 DP。

定义 \(f_{l,r}\) 为把所有被包含在区间 \([l,r]\) 内的外星人杀掉所用最小代价。

根据正常的套路,我们需要将区间分为互不干扰的两部分,然后分别求解。

然后我们发现可以枚举距离最大的外星人 k 被杀的时间 mid。

\[f_{i,j}=\min(f_{i,mid-1}+d_k+f_{mid+1,j}) \]

为什么能把区间断开呢?

如果时刻 mid 还有其他外星人,那么 mid-1 和 mid+1 就会割掉它区间的一部分,也就不再接下来的考虑范围里了,相当于和 k 一起被杀了。

注意需要离散化。

复杂度 \(O(n^3)\)。

P4099 [HEOI2013]SAO

一年半前做过一次,没做出来,现在看还是不会......唉,拉了呀!

如果是一棵树的话,肯定可以做,但这题是个 DAG,所以我们需要正反两种边分别做一下。

定义 \(f_{i,j}\) 为节点 i 在其子树中排名为 j 的方案数。

假设 u 的排名为 p,儿子 v 的排名为 q,且边为 \((v,u)\)。

定义 k 为 u 加上 v 后的排名,那么子树 v 中一定右 k-p 个排名小于 p 的,而 v 的排名小 u,所以 \(q\le k-p\),\(q+p\le k\)。

排在 u 之前的有 p-1 个是原来的,排在 u 之后的有 \(siz_u-p\) 个是原来的,所以和新加入的儿子 v 组合一下就是 \(\dbinom{k-1}{p-1}\cdot \dbinom{siz_u+siz_v-k}{siz_u-p}\)。

所以转移方程为:

\[f_{u',k}=\sum\limits_{p=1}^{siz_u}\sum\limits_{q=1}^{siz_v}[q+p\le k] \dbinom{k-1}{p-1}\cdot \dbinom{siz_u+siz_v-k}{siz_u-p}\cdot f_{u,p}\cdot f_{v,q} \]

同理考虑边为 \((u,v)\) 的情况。

因为 v 的排名要比 u 靠后,所以 \(q>k-p\),\(q+p>k\)。

然后转移还和之前一样。

现在复杂度是 \(O(n^3)\),我们需要尝试优化掉一个 \(\sum\)。

将与 p 有关的都提到前面:

  1. \((v,u)\):

\[f_{u',k}=\sum\limits_{p=1}^{siz_u}\left(f_{u,p}\cdot \dbinom{k-1}{p-1}\cdot \dbinom{siz_u+siz_v-k}{siz_u-p}\cdot \sum\limits_{q=1}^{k-p}f_{v,q}\right) \]

  1. \((u,v)\)

\[f_{u',k}=\sum\limits_{p=1}^{siz_u}\left(f_{u,p}\cdot \dbinom{k-1}{p-1}\cdot \dbinom{siz_u+siz_v-k}{siz_u-p}\cdot \sum\limits_{q=k-p+1}^{siz_v}f_{v,q}\right) \]

最后的那个 \(\sum\) 可以用前缀和优化掉。

注意:上下界一定要卡好,\(f_{i,1}=1\)。

复杂度 \(O(n^2)\)。

P6268 [SHOI2002]舞会

一道网络流/二分图的题。

首先,我们可以黑白染色把男女分开,搞成一个二分图。

然后,要求出这个图的最大独立集,也就是总人数 - 最大匹配数。

网络流和 KM 都可以做。我用的是网络流。

标签:dbinom,省选,siz,复杂度,第六周,cdot,计划,sum,DP
From: https://www.cnblogs.com/HQJ2007/p/17561600.html

相关文章

  • 假期计划
    为表假期好好学习之决心,特此制定一份基于大尺度宏观计划和小尺度每日时间规划的假期学习计划。·每日时间规划\(7:30\)\(ard.\)起床,洗刷,吃饭。$8:30$开始上午学习具体学习内容:1:各科假期作业(语文、数学、英语、物理、化学、地理)2:学习优先级(语文\(\rightarrow\)英语\(\r......
  • 我的投票计划
    《我的投票计划》     https://tieba.baidu.com/p/8505205758      @卡西地   ,  我看到了你发的 25楼,   现在没了, 截图在下面 。 我现在回复你,  多艾特几次会给百度服务器造成过大的负担吗 ?   吧务还要操心这个 ? ......
  • 一些假期计划
    不设密码,公开寻求催卷.jpg0715-0813可能乱的如同草纸.jpgTODO:作业:每科六套卷子英语六套听力,报纸《百年孤独》语文50则名言想做的事:物理必修二+选修1的考点。然后碰到困难的章节写写必刷题。化学必修一的必刷题应该还剩半本,然后后必修二的前半。预习选修一。英语把单......
  • 首个!AI开发者创作激励计划开启,有成长、有收入
    各种视频网站都有什么创作激励!那什么时候有专属于AI开发者的创作激励?好!那AI开发者的福利来了!!既能潜心进行模型开发,又能提升技术能力,还能领一份创作金!!飞桨AIStudio全新发布首个面向AI开发者的创作激励期待持续与你相伴AI之路,见证彼此的成长什么是创作激励体系飞桨AIStudio创建至今......
  • 题解 [NOIP2015 提高组] 运输计划
    题目链接闲话:虽说是紫题,但慢慢想还是完全没有问题的。由于\(m\)个运输计划同时开始,所以耗费时间就是最慢的飞船耗费的时间(即最长时间)。考虑到题目让求最短时间,也就是最长的最短,可以二分。考虑二分最长时间(记作\(k\)),那么将所有路径分成两类,一类是原来耗费的时间就小于等于\(......
  • 06_sar:敏感文件泄露、文件上传、组件漏洞、反弹shell、计划任务提权
    1.信息收集1.1主机发现1.2端口扫描1.3具体扫描1.4目录扫描1.5nmap默认脚本扫描2.信息利用2.1访问网站:只有一个apache2的页面2.2访问robots.txt因为robots.txt大多数都是存的目录,所以尝试访问一下可以看到一个带有版本号的文件,这个可能是一个软件,下载压缩包通过观察里面的描述确定......
  • 做计划的方法
    1、任务分解模板:包括:总体目标、子项目名称、子项目目标、关键举措、衡量标准(重要)、责任人、计划完成时间(重要)、状态、以及后续的进展(按周/月等)。总体目标  子项目名称子项目目标关键举措  衡量标准  责任人  计划完成时间  状态(>90%达标)  3月进展  4......
  • 关于竞赛和强基计划
    二、关于竞赛和强基计划。国子学孩子去上的这个国子学可是个很牛的培训机构,不仅省内的数学物理竞赛生都来这培训,就连周边省市甚至深圳广州北京都有不少学生过来上课,培训的教练也很牛,有培养出150多个国家集训队队员的惊人战绩,就连我们学校的竞赛培训老师也跟着一起学习,那讲的题目......
  • SQLSERVER 维护计划无法删除
    数据对网站运营或者企业运营是至关重要的,所以,我们在使用数据库的时候,为了保证数据的安全可靠性,都会做数据库备份,很显然,这个备份,我们不可能每天都去手动备份,SQLServer数据库就可以提供数据库定时备份的任务,你可以设置按照天、周、月、年等不同设置不同的备份周期,这里我就不在介......
  • NASA的食物计划
    题目背景NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以后发生,谁也无法保证。所以,在遇到这类航天问题时,也许只能让航天员出仓维修。但是过多的维修会消耗航天员大量的能量,因此NASA便想设计......