BZOJ传送门

洛谷传送门

这道题和NOIPNOIPNOIP的那道货车运输有区别吗

做一个KruscalKruscalKruscal重构树就可以了

每次贪心暴力尽量选就是了

#include<bits/stdc++.h>
using namespace std;
inline int read(){char ch=getchar();int res=0,f=1;while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}while(isdigit(ch))res=(res<<3)+(res<<1)+(ch^48),ch=getchar();return res*f;
}
#define ll long long
const int N=300005;
const ll inf=1000000000000000ll;
int n,m,adj[N],nxt[N<<3],to[N<<3],fa[N<<1],f[N<<1],cnt,dep[N<<1],siz[N<<1],top[N<<1],son[N<<1],tot,q;
int pr[N],fi;
ll b[N],val[N<<1];
struct edge{int u,v;ll w;
}e[N<<1];
inline bool comp(const edge&a,const edge &b){return a.w>b.w;
}
inline void addedge(int u,int v)  {nxt[++cnt]=adj[u],adj[u]=cnt,to[cnt]=v;
}
void dfs1(int u){siz[u]=1;for(int e=adj[u];e;e=nxt[e]){int v=to[e];if(v==fa[u])continue;fa[v]=u,dep[v]=dep[u]+1;dfs1(v),siz[u]+=siz[v];if(siz[v]>siz[son[u]])son[u]=v;}
}
void dfs2(int u,int tp){top[u]=tp;if(!son[u])return;dfs2(son[u],tp);for(int e=adj[u];e;e=nxt[e]){int v=to[e];if(v==fa[u]||v==son[u])continue;dfs2(v,v);}
}
int find(int x){return f[x]==x?f[x]:f[x]=find(f[x]);
}
inline int Lca(int u,int v){while(top[u]!=top[v]){if(dep[top[u]]<dep[top[v]])v=fa[top[v]];else u=fa[top[u]];}return dep[u]<dep[v]?u:v;
}
int main(){tot=n=read(),m=read(),q=read();for(int i=1;i<=n;i++)f[i]=i;for(int i=1;i<=n;i++)pr[i]=read();for(int i=1;i<=n;i++)b[i]=read();for(int i=1;i<=m;i++){e[i].u=read(),e[i].v=read(),e[i].w=read();}if(q)fi=read();for(int i=2;i<=q;i++){e[++m].u=fi,e[m].v=read(),e[m].w=inf;}sort(e+1,e+m+1,comp);for(int i=1;i<=m;i++){int f1=find(e[i].u),f2=find(e[i].v);if(f1!=f2){f[f1]=f[f2]=f[++tot]=tot;val[tot]=e[i].w;addedge(f1,tot),addedge(f2,tot);addedge(tot,f1),addedge(tot,f2);}}dfs1(tot),dfs2(tot,tot);int plc;ll now=0;plc=pr[1];if(b[pr[1]]>0)now=b[pr[1]];else cout<<0<<'\n';for(int i=2;i<=n;i++){now=min(now,val[Lca(pr[i],plc)]);if(b[pr[i]]>0)now+=b[pr[i]];else {b[pr[i]]=-b[pr[i]];cout<<min(b[pr[i]],now)<<'\n';now=max(now-b[pr[i]],(ll)0);}plc=pr[i];}
}

转载于:https://www.cnblogs.com/stargazer-cyk/p/10366331.html

【BZOJ3322】【洛谷P3280】【SCOI2013】摩托车交易(Kruscal重构树+贪心)相关推荐

  1. 货车运输--kruscal重构树板子

    前置知识: kruscal重构树 用于求解有关两点间路径最大边权最小值和最小边权最大值问题 求解两点间路径最大边权最小值--最大生成树思想,优先选择权值大的边 求解两点间路径最小边权最大值--最小生成 ...

  2. 【IOI2018】狼人【Kruscal重构树】【主席树】

    题意:nnn个点mmm条边的无向图,qqq次询问,每次给定s,t,L,Rs,t,L,Rs,t,L,R,判断是否存在一条sss到ttt的路径,使得路径上可以找到一点kkk,满足此路径s∼ks\sim k ...

  3. 「LuoguP4995」「洛谷11月月赛」 跳跳!(贪心

    题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi​,地面的高度是 h_0 = 0 ...

  4. SSL 2331 洛谷 1717 信息学奥赛一本通 1373 鱼塘钓鱼#贪心#

    动态规划 温馨提示:交洛谷请在总时间*12并调整输入格式. 题目 设计一个钓鱼方案,从第1个鱼塘出发,希望能钓到最多的鱼. 分析 首先是贪心,最后在第i个鱼塘钓鱼的话,那么路上的时间是固定的,所以也可 ...

  5. 外卖(food) 洛谷4040宅男计划 三分套二分贪心

    food评测传送门 [题目描述] 叫外卖是一个技术活,宅男宅女们一直面对着一个很大的矛盾,如何以有限的金钱在宿舍宅得尽量久.     外卖店一共有 N 种食物,每种食物有固定的价钱 Pi 与保质期 S ...

  6. 洛谷P1095守望者的逃离题解-伪动态规划/贪心

    链接 题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很 ...

  7. 洛谷 - P3357 最长k可重线段集问题(最大费用最大流+思维建边+拆点)

    题目链接:点击查看 题目大意:给出n条开线段,开线段的意思就是端点的两个点属于开区间,不属于线段中,让从中选出数条线段,满足: 在x轴选取任何一个点,选取线段向x轴映射到该点的次数小于等于k 所选线段 ...

  8. 洛谷 - P3358 最长k可重区间集问题(最大费用最大流+思维建边)

    题目链接:点击查看 题目大意:给出n个开区间,现在要求从中选取一定数量的区间,需要满足: 对于任意点x,所选取的区间中包含点x的个数小于等于k 区间长度和最大 要求输出最长的区间长度和 题目分析:一开 ...

  9. 洛谷 P1589 泥泞路 2019青岛市竞赛(贪心)

    题目链接 https://www.luogu.org/problemnew/show/P1589 解题思路 用结构体存下每一段泥泞路的左端点和右端点,然后用sort根据左端点排序,采用贪心的思想,从左 ...

最新文章

  1. exchange 2010 中OAB 排错一例
  2. sklearn自学指南(part55)--决策树
  3. java ee空指针_Java EE 7是最终版本。 思想,见解和进一步的指针。
  4. springboot a service调用b service_CaaS: 内容是新的基础设施 Content-as-a-Service
  5. 如何使用p6spy来监控sql
  6. 编写安全的驱动程序之输入输出检查
  7. 编程基本功:典型的柳氏风格命名一例
  8. VFIO PassThrough
  9. w10系统 怎么快捷搜索服务器,w10系统怎么远程连接服务器
  10. 用java编写圆锥,java编写圆锥形体积
  11. 推荐系统笔记(八):推荐系统中的长尾效应
  12. PS 2019 Mac版 自学入门系列(六)——裁剪和拉直图像
  13. 干货丨时序数据库DolphinDB脚本语言的混合范式编程
  14. Python爬虫基础:scrapy 框架—ltem和scrapy.Request
  15. VTS 固态雷达 OCEANGARD
  16. Oracle数据库精讲与疑难解析(第2版)
  17. Arduino Timer
  18. u盘被占用不能安全弹出怎么办?里面的文件怎么取出来
  19. unity 安卓应用名称多语言本地化
  20. matlab中绘制饼图_如何将第五个切块分离出来,matlab考试题及答案精选

热门文章

  1. datawhale9月组队学习task01环境搭建,初始数据库
  2. 黑客窃取 4 亿 Twitter 用户记录,勒索马斯克破财消灾
  3. 计算机dns的工作原理,解析DNS工作原理
  4. 电脑桌面上的东西从计算机进去,如果有东西卡在电脑屏幕上怎么解决
  5. 担心聊天信息泄露?试试冷杉云盘密聊功能!
  6. 欧拉方法c语言程序,欧拉回路算法C语言
  7. chatgpt实际是怎样工作的?
  8. Mybatis面试题整理
  9. matlab wsd,matlab-restplusgretna—MRI
  10. 价值营销:让中高端品牌成为信仰