首页 > 其他分享 >一种巧妙的DP优化方法——pht转化

一种巧妙的DP优化方法——pht转化

时间:2024-10-25 22:00:56浏览次数:4  
标签:cnt sum 巧妙 转化 转移 DP pht

P6944 [ICPC2018 WF]Gem Island

之前一直都没有弄懂pht转化有什么用,现在懂了,故作文以记之。
直接从CYJ的题解开始讲起,这种阶梯DP是人都想得出来,只不过是 \(O(n^4)\) 或者 \(O(n^3ln (n))\) 的,本人觉得这道题的关键在于如何优化掉整整一个 \(O(n)\)
首先一个数列的权值就是类似于 \(\sum i*cnt(i)\) 的,先进行一步pht转化得到 \(\sum cnt(x\ge i)\)。
这种转化的意义在于把每一层的区别给打破了,意思就是可以若干层一起转移:
假如没有进行pht转化,那么在做DP的时候我们显然要先枚举那个 \(i\) ,这样就把每一层给彻底区分开来,就无法优化了,但是如果进行pht转化后,每一层的转移的贡献就只与这一层放了多少个元素有关而与这是第几层无关,因此我就可以把枚举层数的那一维给省去了,而在转移的过程中则就是把一堆虽然转移的层数不同但是转移的那层放的元素的个数相等的一坨状态一起转移,而计算的方向也就是 \(d\) 单调递增,我认为这个转化是非常巧妙的。
归纳可以使用pht转化:
① \(ans=\sum i*cnt(i)\)
② 一般都是有多个状态,在转化之后也就是优化掉某个状态之后仍然具有转移的方向

标签:cnt,sum,巧妙,转化,转移,DP,pht
From: https://www.cnblogs.com/chenhx-xcpc/p/18503341

相关文章

  • 关于期望dp的一些个人理解
    本人概率期望菜的一批,写一下博客来加深印象期望的基本定义首先期望本身是一个加权平均值,表示把每种情况按照概率发生后总和除以总的发生次数,这是定义法,然后合并一下就是:\[E=\sum_ip_i\timesval_i\]其中\(p_i\)表示事件\(i\)发生的概率,满足\(\sump_i=1\)关于期望......
  • DP思路及套路积累
    多发现题目的性质,从性质上下手dp转移可以通过更改顺序来消除一些限制把dp转移需要的条件写进dp状态里dp的用途是广泛的,包括计数、最优化、可行性等等,其根本就是利用记忆化避免重复计算看到奇怪的限制应该考虑将其形式化,常规化看到位运算类的性质可以考虑数位dp一个排......
  • 巧妙的dp优化方法
    \(\color{green}\textbf{[记录一种巧妙的dp优化方法]}\)这是一种巧妙的优化状态的方法,通过把状态提前(或者说是把状态转化为限制)的方法来避免记录一些别的信息,这种优化方法相比起数据结构优化更加强大,故作文记之\(\color{blue}\textbf{[例题]}\)CF1679ETypicalPartyinDorm......
  • E71 树形DP+二分 P3523 [POI2011] DYN-Dynamite
    视频链接:   P3523[POI2011]DYN-Dynamite-洛谷|计算机科学教育新生态//树形DP+二分O(nlogn)#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;intread(){intx=0,f=1;charc=getchar();while(c>'9'||c......
  • 数位DP
    不得不说,数位DP是我掌握的最不好的一个板块。其实数位DP还挺好理解的,状态设计也一目了然,但是请小心前导零。从数位DP最基础的模版题:windy数开始做起P2657[SCOI2009]windy数题意:不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。windy想知道,在a和b之......
  • wordpress接入腾讯云COS,50G月免费流量
    对象存储COS是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持HTTP/HTTPS协议访问的分布式存储服务。腾讯云COS的存储桶空间无容量上限,无需分区管理,适用于CDN数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景,适用于网站需要实时访问、频繁访......
  • 【2024有效】WordPress忘记密码找回登录密码的最简单有效的方法
    这个找回Wordpress后台密码密的方法,前提是,可以操作数据。 最近忘记了极客侠网站登陆密码,还是按照以前的方法,进入数据库直接修改数据库,但是现在wordpress密码的加密不是简单的MD5所以不能用一个md5加密好的密码去替换数据库,这里的关键所在就是不知道现在的加密方式,于是又百......
  • 网络协议基础(2):socket套接字及TCP、UDP的实现
    socket套接字及TCP、UDP的实现socket套接字socket的基本概念socket的类型Socket的工作流程Socket的编程接口(C++示例)1.创建Socket2.绑定地址3.监听连接4.接受连接5.连接到服务器6.发送数据7.接收数据8.关闭Socketsocket相关的结构体sockaddr结构体sockaddr......
  • C# UDP组播客户端【UDPClient】
    方式一UdpClientudp=newUdpClient(5566);//要通过其进行通信的本地端口号。5566是源端口udp.JoinMulticastGroup(IPAddress.Parse("224.0.0.4"));//将UdpClient添加到多播组;IPAddress.Parse将IP地址字符串转换为IPAddress实例IPEndPointmu......
  • C# UDP广播启动服务和客户端【Socket】
    服务端:Socketsocket=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);//初始化一个Scoket协议IPEndPointiep=newIPEndPoint(IPAddress.Any,9095);//初始化一个侦听局域网内部所有IP和指定端口EndPointe......