uoj 279: 数据分块鸡 动态规划+可持久化线段树

这是一篇关于如何利用决策单调性和可持久化线段树解决UOJ 279题目的文章。博主分享了自己在初次看到题目时的误解,以及后来理解到的正确解题思路——通过决策单调性优化动态规划,并使用暴力可持久化线段树来计算特定区间的花费。提供了AC代码作为解题示范。
摘要由CSDN通过智能技术生成

        一开始看到这道题目的时候以为是dp+线段树修改什么的来维护。

       但是n=50000好奇怪啊。

       看了题解才知道原来是决策单调性+暴力可持久化线段树求某一个区间的花费。

       刚好没有怎么写过dp决策单调性的优化,就写一发吧。

AC代码如下:

#include<bits/stdc++.h>
#define ll long long
#define N 100005
#define M 2000005
using namespace std;

int n,m,trtot,fst[N],pnt[N],nxt[N],rt[N],ls[M],rs[M],q[N],lf[N]; ll f[N];
struct node{ int x; ll y,z; }val[M];
node operator +(node u,node v){ return (node){u.x+v.x,u.y+v.y,u.z+v.z}; }
node operator -(node u,node v){ return (node){u.x-v.x,u.y-v.y,u.z-v.z}; }
void ins(int l,int r,int x,int &y,int u,node v){
	y=++trtot; val[y]=val[x]+v;
	if (l==r) return;
	int mid=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值