当前位置: 首页 > news >正文

P2305 [NOI2014] 购票 - Harvey

考虑动态规划:
设置状态 \(f_i\) 表示从 \(i\)\(1\) 所需的最少资金。
则有状态转移(\(j\)\(i\) 的祖先): \(f_i = \min_{d_i-d_j \leq l_i}{f_j + (d_i-d_j)\cdot p_i+q_i}\).
对式子进行简化,变为 \(f_i = \min_{d_i-d_j \leq l_i}{(f_j-d_j\cdot p_i)}+d_i\cdot p_i + q_i\).

  • 若不考虑距离限制,则可以用李超线段树协助转移,时间复杂度 \(\mathcal{O(n\log n)}.\)
  • 考虑一条链的情况,此时加上距离限制,可以用线段树套李超来解决,时间复杂度 \(\mathcal{O(n \log ^2 n)}\)

由以上两个特殊情况,推到普遍情况。
考虑运用出栈序解决树的情况,出栈序即离开每个节点返回祖先的顺序。
我们可以发现出栈序的特殊性质:

对于一个点 \(u\),它的祖先表示为 \(fa\),则 \(dfn_u\)\(dfn_{fa}\) 之间的所有点,要不没遍历过,要不就是 \(u\)\(fa\) 路径上的点。

这个特殊性质很容易理解,画一画图就可以了。
于是就可以转化为链的情况,用树套树解决问题。

#include<bits/stdc++.h>
#define ll long long
#define mp make_pairusing namespace std;const int N = 2e5+5;inline ll read() {ll x = 0; char c = getchar();while(c < '0' || c > '9') c = getchar();while(c >= '0' && c <= '9') x = x*10 + c-'0', c = getchar();return x;
}
namespace LC {struct segment{ll k,b;int p;ll operator ()(ll x){return k*x+b;}}tr[N*20];int ls[N*20],rs[N*20];int idx=0;void Ins(int &u,int l,int r,segment t){if(!u){u=++idx;tr[u]=t;return ;}int mid=l+r>>1;if(t(mid)<tr[u](mid))swap(tr[u],t);if(l>=r)return ;if(t.k<tr[u].k) Ins(rs[u],mid+1,r,t);else Ins(ls[u],l,mid,t);}ll qry(int u,int l,int r,int pos){if(!u)return 1e18;ll res=tr[u](pos);int mid=l+r>>1;if(pos<=mid)res=min(res,qry(ls[u],l,mid,pos));else res=min(res,qry(rs[u],mid+1,r,pos));return res;}
}
struct Edge{int to,nxt;
}e[N];int tot=0,head[N];
void add_Edge(int u,int v){e[tot].nxt=head[u];e[tot].to=v;head[u]=tot++;
}
int n,m,top;
int fa[N];
int stk[N],b[N];
ll d[N],f[N],s[N],l[N],p[N],q[N];#define ls u<<1
#define rs u<<1|1struct Tree{int rt;
}tr[N<<2];void update(int u,int l,int r,int pos,LC::segment t){LC::Ins(tr[u].rt,0,1e6,t);if(l==r)return ;int mid=l+r>>1;if(pos<=mid)update(ls,l,mid,pos,t);else update(rs,mid+1,r,pos,t);
}ll query(int u,int l,int r,int L,int R,int x){if(L<=l && r<=R)return LC::qry(tr[u].rt,0,1e6,x);int mid=l+r>>1;if(L>mid)return query(rs,mid+1,r,L,R,x);if(R<=mid)return query(ls,l,mid,L,R,x);return min(query(ls,l,mid,L,R,x),query(rs,mid+1,r,L,R,x));
}
void dfs(int u) {
//	cout<<u<<"\n";for(int i=head[u];~i;i=e[i].nxt) {int v=e[i].to;dfs(v);}b[u]=++top;
} void DFS(int u){LC::segment t={-d[top],f[u],u};stk[top]=u;update(1,1,n,b[u],t);
//	cout<<b[u]<<"\n";for(int i=head[u];~i;i=e[i].nxt) {int v=e[i].to;top++;d[top]=d[top-1]+s[v];int x=lower_bound(d,d+top,d[top]-l[v])-d;//	cout<<d[top]-l[v]<<'\n';int ql=b[v],qr=b[stk[x]];//	cout<<ql<<" "<<qr<<"\n";f[v]=query(1,1,n,ql,qr,p[v])+d[top]*p[v]+q[v];DFS(v);top--;}
}
int main() {
//	freopen("P2305_4.in","r",stdin);
//	freopen("1.out","w",stdout);n=read(),m=read();memset(head,-1,sizeof(head));for(int i=2;i<=n;i++){fa[i]=read(),s[i]=read(),p[i]=read(),q[i]=read(),l[i]=read();add_Edge(fa[i],i);}dfs(1);top=tot=0;DFS(1);for(int i=2;i<=n;i++)printf("%lld\n",f[i]);return 0;
}
http://www.jsqmd.com/news/114906/

相关文章:

  • Open-AutoGLM特征工程革命(效率跃迁全记录)
  • RAG技术揭秘:如何通过检索增强生成解决大模型知识过时与幻觉问题?
  • 任务堆积严重?Open-AutoGLM动态优先级调度让系统响应提速5倍
  • Typora代码块痛点破解方案—深度探讨代码高亮、跨平台兼容及功能扩展的解决思路
  • 2025网络安全入门保姆级教程:零基础小白的第一本终极指南
  • 9 个降AI率工具,专科生必备避坑指南
  • 2025年最值得信赖的耐用防水微动开关厂家TOP5,家电微动开关/大型微动开关/小型微动开关/鼠标微动开关供货商排名 - 品牌推荐师
  • MATLAB 实现:基于灰狼优化算法(GWO)结合 B 样条曲线进行无人机三维路径规划
  • 基于vsphere高校私有云的设计与部署
  • 2025年12月铝水过滤网,纤维过滤网,帽式过滤网厂家品牌推荐榜,彰显国产技术实力 - 品牌鉴赏师
  • [特殊字符]工业标准文档“消化不良“?LLM+知识图谱三步翻倍表格任务F1,钢铁直男秒变逻辑大师!
  • RL框架选择指南:大模型RL训练框架深度解析,多模态环境下的实战策略与优化技巧!
  • 【Open-AutoGLM内存优化终极指南】:揭秘千兆模型压缩背后的核心技术
  • 模型太重无法上线?:Open-AutoGLM自动化裁剪方案一键解决
  • Open-AutoGLM推理加速实战:如何将模型延迟降低80%?
  • 2025年高分子防水卷材供货厂家权威推荐榜单:外墙防水涂料/堵漏材料/防水涂料源头厂家精选 - 品牌推荐官
  • 【国产大模型端侧落地新突破】:Open-AutoGLM推理效率提升实战
  • 2025年12月异形过滤网,扇形过滤网,铜水过滤网厂家推荐:行业权威盘点与品质红榜发布 - 品牌鉴赏师
  • 2025-2026北京靠谱律师口碑排名白皮书:深度剖析优质法律解决方案 - 苏木2025
  • Custom SRP - 16 Render Scale
  • 【干货】LangChain数据流动全解析:RAG与Agent场景无限处理问题解决方案,附代码实例!
  • Open-AutoGLM性能瓶颈突破:4步完成工业级触控流畅度优化
  • 2025年红外温度传感器厂家权威推荐榜单:工业红外线测温仪/红外线测温仪/红外线测温仪探测器源头厂家精选 - 品牌推荐官
  • 独家解密Open-AutoGLM睡眠模式设计,待机功耗进入微瓦时代的底层逻辑
  • 复习——进程
  • 【Open-AutoGLM特征提取效率突破】:揭秘提升300%性能的核心技术细节
  • Open-AutoGLM课表自动同步从0到1(资深工程师私藏配置方案)
  • 大模型工程师薪资破10万!字节美团京东疯抢,400万AI人才缺口背后的财富密码!
  • 【Open-AutoGLM CPU调度优化实战】:揭秘高效资源分配背后的黑科技
  • 别再迷茫了!网络安全最详细自学路线与个人学习笔记(一站式解决方案)