首页 > 其他分享 >线性dp

线性dp

时间:2023-05-20 23:24:20浏览次数:51  
标签:int d% solve ans 线性 dp

P1725 琪露诺

一道线性dp的题目
状态设置:f[i]:表示到达位置i时的最大价值
状态转移:f[i] = max(f[i], f[j] + a[i])(i - r =< j <= i - l)
这样做显然枚举状态是O(n)转移也需要O(n),所以时间复杂度是O(n^2)的显然会T
状态我们是一定要枚举的,我们能优化的只有转移的计算量, 我们需要快速找到i - r =< j <= i - l的f[j]的最大值,
我们发现当i+1, 我们要求的是 i - r + 1=< j <= i - l + 1中的最大值,也就是说只新增了一个元素,减少了一个元素我们要求的是区间的最大值,这样很明显我们可以用滑动窗口优化,来维护这样一个长度为r - i + 1的窗口的最大值
这样这道题就解决了

#include <bits/stdc++.h> 

using namespace std;

const int N = 2e5 + 10;
int f[N], a[N], ans = -0x3f3f3f3f;
int q[N], tt = -1, hh = 0;

void solve()
{
	int n, l, r; scanf("%d%d%d", &n, &l, &r);
	for(int i = 0; i <= n; ++ i) scanf("%d", &a[i]);
	memset(f, 0xcf, sizeof (f));
	f[0] = 0;
	for(int i = l; i <= n; ++ i)
	{
		while(hh <= tt && q[hh] < i - r)	++ hh;
		while(hh <= tt && f[q[tt]] < f[i - l]) -- tt;
		q[++ tt] = i - l;
		f[i] = f[q[hh]] + a[i];
		if(i + r > n)	ans = max(ans, f[i]);
	}
	printf("%d\n", ans);
}

int main()
{
//	freopen("1.in", "r", stdin);
//	int t; scanf("%d", &t);
//	while(t --) solve();
	solve();
	return 0;
}

标签:int,d%,solve,ans,线性,dp
From: https://www.cnblogs.com/cxy8/p/17418004.html

相关文章

  • 配置wordpress:自定义简码(wordpress 6.2)
    一,添加php代码的例子:1,代码://说明:得到当前时间functionlhdGetNowTime(){ $now=date("Y-m-dH:i:s");return$now;}//注册成简码,名字myNowadd_shortcode('myNow','lhdGetNowTime');//说明:获取完整URLfunctioncurPageURL(){ $pageURL='h......
  • EndpointController更新endpoint
    因kcm异常而没有更新endpoint停止kube-controller-manager删除Podcoredns后endpoint没有更新kube-proxy没有更新svckube-dns恢复kcm后更新endpoint启动kube-controller-manager后,去掉了异常corednsPodIPpkg/controller/endpoint/endpoints_controller.gosyncService......
  • 低压球泡灯 线性恒流方案 线路图AP5101B 线性恒流芯片
    1,方案来源:深圳市世微半导体有限公司汤巧2,产品描述AP5101B是一款高压线性LED恒流芯片,外围简单、内置功率管,适用于6-60V输入的高精度降压LED恒流驱动芯片。最大电流1.0A。AP5101B可实现内置MOS做1.0A,外置MOS可做2.0A的。AP5101B内置温度保护功能,温度保护点为130......
  • m基于低复杂度高性能BP译码算法的LDPC编译码性能matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要LDPC码是麻省理工学院RobertGallager于1963年在博士论文中提出的一种具有稀疏校验矩阵的分组纠错码。几乎适用于所有的信道,因此成为编码界近年来的研究热点。它的性能逼近香农极限,且描述和实现简单,易于进行理论分......
  • m基于低复杂度高性能BP译码算法的LDPC编译码性能matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:       2.算法涉及理论知识概要       LDPC码是麻省理工学院RobertGallager于1963年在博士论文中提出的一种具有稀疏校验矩阵的分组纠错码。几乎适用于所有的信道,因此成为编码界近年来的研究热点。它的性能......
  • subsequence1 (牛客多校) (2个串比大小, DP, 组合数)
    题面大意:给定2个字符串,问有多少个子字符串S,是大于t的 思路数据范围很小,因此考虑n^2做法分2步,位数s>位数t的时候然后位数相等的时候利用DP,处理,分别就是枚举前k个数和s相同,然后k+1个数比t大就可以. 具体思路自己想想,和那个比较像   cons......
  • 线性查找和二分查找
    线性查找'''列表线性查找线性查找就是从列表起始位置一次查询,直到查询到目标值,或者遍历整个列表完毕才结算查找过程线性查找复杂度O(n),比较慢'''fromcall_timeimport*@call_timedefliner_search(list,value):forindex,elementinenumerate(list):......
  • NDP 常用报文格式
    邻居发现协议(NeighborDiscoveryProtocol,NDP)是IPv6协议体系中最重要的基础协议之一,很多IPv6功能都依赖NDP来实现。一般说来,NDP可以实现的功能包括:替代IPv4的ARP来形成邻居表;默认网关的自动获取;无状态地址自动配置;路由重定向等。NDP定义了5类ICMPv6报文,即路由器请求(RouterSolicito......
  • 线性dp
    P2285[HNOI2004]打鼹鼠这道题目类似最长上升子序列这是一道线性dp的题目怎么设置状态呢?f[i]:表示最后一只鼹鼠选择i的最大值转移:f[i]=max(f[i],f[j]+1)#include<bits/stdc++.h>usingnamespacestd;constintN=1e4+10;intf[N];structwy{ intt,x,......
  • 配置wordpress:在footer/页脚添加icp备案许可证号(wordpress 6.2)
    一,添加icp许可证号外观->主题文件编辑器->主题页脚:在class名为site-info的div中添加如下html代码:<div style="text-align:center"> <ahref="http://beian.miit.gov.cn/"class="imprint"rel="externalnofollow"target="_blank"......