首页 > 其他分享 >最优化与计数

最优化与计数

时间:2024-08-29 19:47:50浏览次数:8  
标签:sz 拓扑 sum 计数 枚举 权值 最优化 dp

动态规划:可以认为由状态,转移两个过程构成

树上优化技巧

P1272 重建道路

设,dp[i][j]为包含i的大小为j的连通块的最小操作次数,枚举i的每个子树一个个合并上去。

考虑两个点i,j只会在lca处有计算时间贡献,所以是\(O(n^2)\)的

LOJ160. 树形背包

先跑dfs序,设dp[i][w]为从第i个位置开始的后缀,容量为w的最大价值。

设第i个位置为x,则\(dp[i+1][w-w[x]]\)可以转移过来。

或者直接跳过\(x\)所在的子树,从\(dp[low[x]+1][w]\)转移过来。

多项式优化(拉插)

首先可以高斯消元,\(O(n^3)\)
然后考虑其实可以构造,详见拉格朗日插值法

自然数幂和

拉插经典应用

\(F(k)=\sum_{i=1}^{n}i^k\),求\(F(k)\)

\(k<=2000,n<=10^9\)

令\(f(x)=x^k\)

考虑计算\(f(x)-f(x-1)=x^k-(x-1)^{k}\)

将\((x-1)^k\)二项式展开,发现\(f(x)-f(x-1)\)的\(k\)次项正好没了,所以\(f(x)-f(x-1)\)是\(k-1\)次的。

对\(f(x)-f(x-1)\)求和,我们知道对一个\(y\)次的多项式\(g(x)\)求\(\sum_{i}g(i)\)是\(y+1\)次的。

所以\(\sum_{i=1}^{x}(f(x)-f(x-1))\)是\(k\)次的,即\(f(x)\)是\(k\)次的。

再做一次,所以\(F(x)=\sum_{i=1}^{x}f(x)\)是\(k+1\)次的。

然后拉插。

CF1967C Fenwick Tree

考虑枚举区间结尾x,取出长度为\(lowbit(x)\)的一段,区间内每个点到终点的贡献系数的多项式(自变量为k)是\(log(n)\)级的,因为贡献路径长度为\(log(n)\)量级。

所以最后每个位置必定是一个对k的O(log) 阶多项式,所以直接暴力跑前 log 次,然后对每个位置都插一遍就做完了。

P8290 [省选联考 2022] 填树

极差小于等于\(K\)不好做,考虑枚举最小值权值\(x\),那么所有路径上的点的权值都要在\([x,x+k]\)内,现在每个路径上的点\(i\)的权值范围是\([max(x,l_i),min(x+k,r_i)]\)。

先思考如何暴力,我们显然只关心每个点权值范围的大小,也就是\(max(0,min(x+k,r_i)-max(x,l_i)+1)\)。

于是可以直接枚举路径,把路径上所有范围大小乘起来即可。

但是发现有一个问题,这样做不能保证最小权值为\(x\),可以计算所有路径上的点权值在\([x+1,x+k]\)内的答案,简单容斥掉。

考虑优化,计算范围的时候有\(min\)和\(max\),这样十分的不好计算,对每个点分类讨论一下。

image
image

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

首先考虑计算一个子树的合法拓扑序数量。

假设一个点x有两个儿子a和b,dp[i]为i子树内拓扑序的数量。

不难发现有\(dp[x]=dp[a]\times dp[b] \times C(sz(a)+sz(b),sz(a))\),可以理解为siz(x)个位置内随便选取siz(a)个位置把一个a的拓扑序顺序放进去,剩下的位置把一个b的拓扑序顺序放进去。

如果x有很多个儿子也是一样的,手推一下不难得出,比如有一个儿子c,就乘上\(dp[c] \times C(sz(a)+sz(b)+sz(c),sz(a)+sz(b))\)$。

把组合数拆一下,最终的方案数就是sz总和的阶乘除以每个sz各自的阶乘。

sz总和显然是\(sz(x)-1\),即分子为\((sz(x)-1)!\),发现x在计算其父亲的答案的时候会贡献一个\(\frac{1}{sz(x)!}\)。

所以以x为根的拓扑序数量为\(\frac{sz(x)!}{\prod_{y}sz(y)!}\),其中y是x的儿子。

设f[x][i]表示x的子树内的拓扑序,表示s在x子树的拓扑序的第i位的方案数,其中s是题目中枚举的u,然后把s到根的一条链上的点跑树形dp。

不难得出,f[s][1]=dp[s]。

考虑怎么把一个点y的信息转移到父亲x,我们可以先计算除了y的x的所有的儿子的拓扑序方案数,,根据前面的结论,只需要预处理x个每个节点z的\(\frac{1}{sz(y)}\)然后把y的siz(y)的拓扑序和这个长度为\(sz(x)-sz(y)-1\)的拓扑序合并。

如果现在s在y的拓扑序中的位置为i,枚举长度为\(sz(x)-sz(y)-1\)的拓扑序中有j个在s之前,方案数为\(C(i+j-1,i-1)\times C((siz(x)-1)-i-j,sz(y)-i)\)

别忘了x一定要放在其子树拓扑序的第一位,所以\(f[i][j]\)一定要变成\(f[i][j+1]\)

根据一开始重建道路这道题的分析,单次是\(O(n^2)\)的,总时间复杂度为\(O(n^3)\)

对于点s,答案为\(\sum{i=1}^(n)f[1][i]\times b[i]\)

考虑将整个过程从上往下推,假设已知\(f[x][i]\),怎么向下计算。

可以把\(f[i][j]\)的值该为s在\(x\)子树内的第i个位置,向上的贡献是多少

最小斯坦纳树

模板:P6192 【模板】最小斯坦纳树

首先分析为什么形成一棵树是最优的,显然如果出现环删掉任意一条边都会更优,所以选出来的是一棵树。

从小往大枚举一个关键点集S

标签:sz,拓扑,sum,计数,枚举,权值,最优化,dp
From: https://www.cnblogs.com/wangwenhan/p/18383609

相关文章

  • 计数 dp 做题记录(日更)
    前言因为本人太弱,急需锻炼思维,固从现在起开始着手写计数题,并写下题解分析思路的欠缺。另外本文将长时间更新,所以我准备把它置顶,尽量日更!P3643[APIO2016]划艇2024.8.28简要题意现在有\(n\)个区间,每个区间范围为\([l_i,r_i]\)。现在有\(n\)个元素需要赋值,每个元素的值要......
  • 组合计数学习笔记
    组合计数整合8.14:模拟赛组合计数又寄,积累还是不够。8.24:谢拜龚神讲解VJ大专题谢拜龚神括号有关问题P3058[USACO12NOV]BalancedCowBreedsG/S对于括号类问题,研究其合法性时,一个重要的性质就是这一路过来都合法(和栈类似)。套路地,将\(\texttt{(}\)看做\(+1\),\(\textt......
  • 地平线—征程2(Journey 2-J2)芯片详解(25)—PMU+系统计数器
    写在前面本系列文章主要讲解地平线征程2(Journey2-J2)芯片的相关知识,希望能帮助更多的同学认识和了解征程2(Journey2-J2)芯片。若有相关问题,欢迎评论沟通,共同进步。(*^▽^*)错过其他章节的同学可以电梯直达目录↓↓↓地平线—征程2(Journey2-J2)芯片详解——目录-CSDN博客9......
  • 最优化问题的KKT条件
    最优化问题的KKT条件大家好,我是小新,今天给大家带来一期KKT条件的讲解文章目录最优化问题的KKT条件前言一、最优化问题分类二、常见求解步骤三、KKT条件解析四、解析优化类问题五、实现过程总结前言hello!大家好,提到最优化问题大家都会感觉到非常头疼,最优化问题......
  • 基于STM32F103的FreeRTOS系列(十一)·信号量·二值信号量与计数信号量详细使用以及移植
    目录1. 信号量简介1.1 同步和互斥1.1.1 同步1.1.2 互斥1.1.3 总结1.2 分类1.2.1 二值信号量1.2.2 计数信号量1.2.3 互斥信号量1.2.4 递归信号量2. 信号量控制块3. 常用信号量API函数3.1 创建信号量函数3.1.1 创建二值信号量 xSe......
  • yolov8行人车辆检测与计数系统 (行人车辆跟踪计数)
     yolov8行人车辆检测与计数系统(Python+YOLOv8+deepsort车辆追踪深度学习模型+清新界面)(1)YOL v8算法实现,模型一键切换更新;(2)检测图片、视频等图像中的各目标数目;(3)摄像头监控实时检测,便携展示、记录和保存;(4)支持切换目标,各目标位置切换查看;(5)提供数据集和训练代码可重新训练;......
  • 使用Mediapipe和OpenPose进行人体动作分析、计数以及3D姿态估计
     人体步数统计,俯卧撑计数,仰卧起坐计数,引体向上计数,人体动作分析,动作计数,mediapipe,openpose,人体3d姿态分析,3d姿态估计。本项目旨在开发一个基于计算机视觉的人体运动分析系统,能够准确地识别和计数诸如步行、俯卧撑、仰卧起坐、引体向上等多种常见体育锻炼动作。系统利用先进......
  • 计数DP
    闲话NFLS。话说AT计数dp好题挺多啊。[ABC248F]KeepConnect题解区已经讲得十分清楚了。套路地搞dp,将连通载入其中。\(dp_{i,j,0/1}\)表示前\(i\)列,断了\(j\)条边,上下是否连通的方案数。这里我们保证所有的点都与第\(i\)列其中的\(1\)或两个点相连。然后就可以转......
  • STM32F4/M4 波特率寄存器 计数公式
    前言STM32中,USART控制器中的波特率寄存器是可以写入分频数(USARTDIV)小数部分的因此能够更精准地得到我们想要的波特率。波特率:每秒钟传输的二进制代码的位数波特率寄存器位说明 波特率计算公式:其中OVER8通过串口控制寄存器1(USART_CR1第15位来配置它就是用来设......
  • 无向图三元环计数
    无向图三元环计数题目背景无向图$G$的三元环指的是一个$G$的一个子图$G_0$,满足$G_0$有且仅有三个点$u,v,w$,有且仅有三条边$\langleu,v\rangle,\langlev,w\rangle,\langlew,u\rangle$。两个三元环$G_1,G_2$不同当且仅当存在一个点$u$,满足$u\inG_1$......