吃豆豆 经典的区间DP 好题典题

这里很巧妙的注意一点是,你最后要把所有的豆子都吃掉,所以你只要看你多增加的尽量的少就好了

然后维护一段区间,表示的是吃掉这段区间里面的所有豆子的最小代价,然后发现最后一个是左端点或者右端点

你吃一段新的区间的同时会把不在这个区间的所有的豆子的另外代价都增加这里你可以维护一个前缀和就好了

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
const int N = 1e5+10;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a*b/gcd(a,b);}
int qmi(int a,int b,int mod){int res=1;while(b){if(b&1)res=res*a%mod;b>>=1;a=a*a%mod;}return res;}


int n,q,m;
int st1;
// int e[N],ne[N],w[N],h[N],idx;
// void add(int a,int b,int c){
	// e[idx] = b,ne[idx] = h[a],w[idx] = c,h[a] = idx++;
// }


struct Node{
	int x,m,v;
	bool operator<(const Node&W)const{
		return x<W.x;
	}
}node[N];

int dp[510][510][2];
int s[510];
//0-->left


int query(int l,int r){
	return s[n]-s[r]+s[l-1]; 
}
int dfs(int l,int r,int st){
	

	if(l>r)return inf;
	if(l==r&&node[l].x==st1&&node[l].m==0)return dp[l][r][st] = 0;

	if(~dp[l][r][st])return dp[l][r][st];
	
	if(st){
		dp[l][r][1] = min(dfs(l+1,r,1)+(node[l+1].x-node[l].x)*query(l+1,r)+node[l].m,
		dfs(l+1,r,0)+(node[r].x-node[l].x)*query(l+1,r)+node[l].m);
		//dp[l][r][1] = min(dfs(l+1,r,0)+(node[r].x-node[l].x)*query(l+1,r)+node[l].m,dp[l][r][st]);
	}else{
		dp[l][r][0] = min(dfs(l,r-1,1)+(node[r].x-node[l].x)*query(l,r-1)+node[r].m,
		dfs(l,r-1,0)+(node[r].x-node[r-1].x)*query(l,r-1)+node[r].m);
		//dp[l][r][0] = min(dfs(l,r-1,0)+(node[r].x-node[r-1].x)*query(l,r-1)+node[r].m,dp[l][r][st]);		
	}
	
	return dp[l][r][st];
	
}




void solve()
{
	cin>>n>>st1;
	for(int i=1;i<=n;i++)cin>>node[i].x>>node[i].m>>node[i].v;
	memset(dp,-1,sizeof dp);
	n++;node[n].x = st1,node[n].m = node[n].v = 0;
	sort(node+1,node+1+n);
	//cout<<node[3].x<<"\n";
	for(int i=1;i<=n;i++)s[i] = s[i-1]+node[i].v;
	
	cout<<min(dfs(1,n,0),dfs(1,n,1));
	
	
	

}

signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int _;
	//cin>>_;
	_ = 1;
	while(_--)solve();
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/518500.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++的学习之路:11、string(3)

昨天写string的时候没有说全&#xff0c;这里就开始接着讲。 目录 一、resize 二、insert 三、erase 一、resize 昨天说这个的时候没有考虑到缩小范围时咋处理&#xff0c;然后发现报错了&#xff0c;接着我调试发现缩小就不能正常执行了&#xff0c;因为用的是strcap所以…

有关字符串算法

例题一 解法&#xff1a; 算法思路&#xff08;两两⽐较&#xff09;&#xff1a; 我们可以先找出前两个的最⻓公共前缀&#xff0c;然后拿这个最⻓公共前缀依次与后⾯的字符串⽐较&#xff0c;这样就可以找出所有字符串的最⻓公共前缀。 例题二 解法&#xff08;中⼼扩散&am…

UNIAPP(小程序)每十个文章中间一个广告

三十秒刷新一次广告 ad-intervals"30" <template><view style"margin: 30rpx;"><view class"" v-for"(item,index) in 100"><!-- 广告 --><view style"margin-bottom: 20rpx;" v-if"(inde…

win10电脑无线网卡优化

近期win10会频繁断网&#xff0c;无任何规律。目前整理搜索后使用以下两种方法优化网卡&#xff0c;更改配置后断网问题得到有效改善。 方法一&#xff1a;在【电源管理】中取消勾选【允许计算机关闭此设备以节约电源】 方法二&#xff1a;【Preferred enable】修改为prefer 5…

R语言数据操纵:常用函数

这篇文章主要介绍R语言中处理循环&#xff0c;排序&#xff0c;总结重要信息的常用函数。 处理循环的函数 lapply函数 这个函数就是俗称的一句话循环函数&#xff0c;不同于while循环或者for循环&#xff0c;这个函数可以实现一句话就是一个循环的效果。 具体格式为lapply(…

C语言数据结构专题--顺序表(1基础)

前言 我们在对C语言有一定的了解之后&#xff0c;我们就可以开始数据结构的学习了&#xff0c;数据结构多用指针、结构体、动态内存开辟等知识&#xff0c;若对这些知识还不太了解的朋友&#xff0c;就需要加深其理解了&#xff0c;那么废话不多说&#xff0c;我们正式开始本节…

36.基于CAS实现的java类

JUC, java.util.concurrent并发工具包下。 1.原子整数 AtomicInteger AtomicLong AtomicBoolean 底层用的CAS来实现。 AtomicInteger类的incrementAndGet方法&#xff0c;addAndGet方法 public static void main(String[] args) {AtomicInteger atomicInteger new Atom…

一文搞懂 ThreadLocal

简介 ThreadLocal存取的数据&#xff0c;总是与当前线程相关&#xff0c;也就是说&#xff0c;JVM 为每个运行的线程&#xff0c;绑定了私有的本地实例存取空间&#xff0c;从而为多线程环境常出现的并发访问问题提供了一种隔离机制。 ThreadLocal的作用是提供线程内的局部变…

未授权访问-api接口

特别注意api接口的一些命名规则 常见的是这种&#xff0c;具体要看开发人员怎么命名的 而确认api路径的最好办法还是去多出发几个功能点&#xff0c;看他的路径&#xff0c;比如下面触发多个功能点 对比得知两个路径都有pyr/user/这时候可能就会觉得这就是api路径&#xff0c;但…

Azure的VFP和虚拟IP地址

Azure 的Virtual filtering platform (VFP) 是Azure 网络地址转换,端口转换和端口分配的基础。 下面我们来深入介绍一下VFP的工作方式。 VFP的出站动作。 对于客户端地址作为虚拟IP的出站目的地址的时候,VFP 驱动会负责做以下两个动作。 源地址转换。端口地址转换。VFP 和 S…

一分钟了解mos管选型

在选择MOS管时&#xff0c;需要考虑多个关键参数以确保选用的MOS管能够满足特定应用的需求。下面是一些主要参数的介绍 额定电压&#xff08;Vds&#xff09; 也称为漏源电压&#xff0c;通常我们所说的耐压&#xff0c;是指MOS管能够承受的最大电压差。 在选择MOS管时&#xf…

数据湖概述:大数据演进阶段-数据湖

文章目录 一. 大数据发展过程1. 离线大数据平台2. Lambda架构&#xff1a;速度层批层3. Kappa架构&#xff1a;流批一体4. 大数据架构痛点总结 二. 数据湖助力于解决数据仓库痛点问题1. 数据湖特点2. 开源数据湖的架构 三. 数据湖和数据仓库理念的对比1. 数据湖和数据仓库对比2…

c++的STL(7) -- stack

stack容器概述 stack容器其实是实现了一种和栈相同结构的容器。 如图&#xff0c;栈这种结构有两端: 栈底和栈顶。 特殊之处在于&#xff0c;这种结构&#xff0c;我们对数据的操作(删除数据&#xff0c;修改数据&#xff0c;查询数据&#xff0c;添加数据)只能在一端进行(栈…

TAB标签美化 - SVG作为mask

今天觉得V3的标签不是很好看&#xff0c;忽然想起来之前看过Vue Admin Beautiful Pro的样式挺好的&#xff0c;顺手研究了一把。发现Vue Admin Beautiful是采用PNGmask css来解决的。于是乎打算把V3的标签页做点小美化&#xff0c;但是迁移过程发生些小插曲&#xff0c;在此记录…

第1讲——预备知识

一、视觉SLAM十四讲在讲些啥 SLAM&#xff1a;Simultaneous Localization and Mapping 翻译&#xff1a;同时定位与地图构建 搭载特定传感器的主体&#xff0c;在没有环境先验信息的情况下&#xff0c;于运动过程中建立环境的模型&#xff0c;同时估计自己的运动。 当特定传感…

Solidity入门1: 3. 函数类型

Solidity中的函数 solidity官方文档里把函数归到数值类型 函数结构 function <function name>(<parameter types>) {internal|external|public|private} [pure|view|payable] [returns (<return types>)] 看着些复杂&#xff0c;咱们从前往后一个一个看&…

【MySQL】:深入解析多表查询(上)

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. 多表关系1.1 一对多1.2 多对多1.3 一对一 二. 多表查询概述2.1 概述2.2 分类…

Docker Desktop 不支持 host 网络模式

先把这个结论的放在前面&#xff0c;直接访问链接就能看到官方文档中已经明确说了不支持。 参考链接&#xff1a;docker desktop for windows 不支持 host 网络模式 以前对于 docker 的网络模式&#xff0c;一直只是了解&#xff0c;没有亲自尝试过。结果今天在尝试 docker 的 …

『大模型笔记』LLMs入门:从头理解与编码LLM的自注意力机制

LLMs入门&#xff1a;从头理解与编码LLM的自注意力机制 这里直接引用我语雀上的的文章&#xff1a;《从头理解与编码LLM的自注意力机制》