刷题总结——运输计划(bzoj4326)
题目:
题目背景
NOIP2015 提高组 Day2 T3
题目描述
公元2044年,人类进入了宇宙纪元。
L国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了L国的所有星球。
小P掌管一家物流公司,该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从 ui 号星球沿最快的宇航路径飞行到 vi 号星球去。显然,飞船驶过一条航道是需要时间的,对于航道 j ,任意飞船驶过它所花费的时间为 tj ,并且任意两艘飞船之间不会产生任何干扰。
为了鼓励科技创新,L国国王同意小P的物流公司参与L国的航道建设,即允许小P把某一条航道改造成虫洞,飞船驶过虫洞不消耗时间。
在虫洞的建设完成前小P的物流公司就预接了 m 个运输计划。在虫洞建设完成后,这 m 个运输计划会同时开始,所有飞船一起出发。当这 m 个运输计划都完成时,小P的物流公司的阶段性工作就完成了。
如果小P可以自由选择将哪一条航道改造成虫洞,试求出小P的物流公司完成阶段性工作所需要的最短时间是多少?
输入格式
第一行包括两个正整数 n、m,表示L国中星球的数量及小P公司预接的运输计划的数量,星球从 1 到 n 编号。
接下来 n-1 行描述航道的建设情况,其中第 i 行包含三个整数 ai, bi 和 ti,表示第 i 条双向航道修建在 ai 与 bi 两个星球之间,任意飞船驶过它所花费的时间为 ti。
接下来 m 行描述运输计划的情况,其中第 j 行包含两个正整数 uj 和 vj ,表示第 j 个运输计划是从 uj 号星球飞往 vj 号星球。
输出格式
共 1 行,包含 1 个整数,表示小P的物流公司完成阶段性工作所需要的最短时间。
样例数据 1
备注
【样例1说明】
将第1条航道改造成虫洞:则三个计划耗时分别为:11、12、11,故需要花费的时间为12。
将第2条航道改造成虫洞:则三个计划耗时分别为:7、15、11,故需要花费的时间为15。
将第3条航道改造成虫洞:则三个计划耗时分别为:4、8、11,故需要花费的时间为11。
将第4条航道改造成虫洞:则三个计划耗时分别为:11、15、5,故需要花费的时间为15。
将第5条航道改造成虫洞:则三个计划耗时分别为:11、10、6,故需要花费的时间为11。
故将第3条或第5条航道改造成虫洞均可使得完成阶段性工作的耗时最短,需要花费的时间为11。
【数据范围】
所有测试数据的范围和特点如下表所示:
aaarticlea/png;base64,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" alt="" />
请注意常数因子带来的程序效率上的影响。
题解:
二分+树上差分(+dfs序)
首先二分答案··对大于答案的路径给路径上所有的边打上标记··
然后找出是否有条边为这些打标记的边的并集并且最长的一条打标记的路径减去这条边后总长度小于枚举的答案即可··
打标记的话可以用树链剖分··而我用的是差分··这里也第一次学到了打边上差分的方法··
对于一条路径x->y,我们只需tag[x]++,tag[y]++,tag[lca(x,y)]-=2即可····
然后统计tag的话可以直接dfs··也可以通过dfs序··我们从最大的dfs序向最小的枚举··然后依次将枚举的点的tag统计进入它的father即可···然而我是直接dfs的
代码:
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<cmath>
- #include<ctime>
- #include<cctype>
- #include<string>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- const int N=3e5+;
- int tot,first[N],next[N*],go[N*],deep[N],val[N*],dis[N],tag[N],len[N];
- int n,m,g[N][],ans,Maxx,mem[N];
- struct node
- {
- int a,b,val,lca;
- }edge[N];
- bool cmp(node a,node b)
- {
- return a.val>b.val;
- }
- inline int R()
- {
- char c;int f=;
- for(c=getchar();c<''||c>'';c=getchar());
- for(;c<=''&&c>='';c=getchar()) f=(f<<)+(f<<)+c-'';
- return f;
- }
- inline void comb(int a,int b,int c)
- {
- next[++tot]=first[a],first[a]=tot,go[tot]=b,val[tot]=c;
- next[++tot]=first[b],first[b]=tot,go[tot]=a,val[tot]=c;
- }
- inline void dfs1(int u,int fa)
- {
- for(int e=first[u];e;e=next[e])
- {
- int v=go[e];
- if(v==fa) continue;
- dis[v]=dis[u]+val[e];len[v]=val[e];
- deep[v]=deep[u]+,g[v][]=u,dfs1(v,u);
- }
- }
- inline int get(int a,int b)
- {
- if(deep[a]<deep[b]) swap(a,b);
- int i,j;
- for(i=;(<<i)<=deep[a];i++);i--;
- for(j=i;j>=;j--)
- if(deep[a]-(<<j)>=deep[b]) a=g[a][j];
- if(a==b) return a;
- for(i=;i>=;i--)
- if(g[b][i]!=g[a][i]) a=g[a][i],b=g[b][i];
- return g[a][];
- }
- inline void dfs2(int u,int fa)
- {
- for(int e=first[u];e;e=next[e])
- {
- int v=go[e];
- if(v==fa) continue;
- dfs2(v,u);tag[u]+=tag[v];
- }
- }
- inline bool jud(int u,int fa,int tim,int maxx)
- {
- if(tag[u]==tim&&len[u]>=maxx) return true;
- for(int e=first[u];e;e=next[e])
- {
- int v=go[e];
- if(v==fa) continue;
- if(jud(v,u,tim,maxx)) return true;
- }
- }
- inline bool check(int x)
- {
- int maxx=,cnt=;
- memset(tag,,sizeof(tag));
- for(int i=;i<=m;i++)
- {
- if(edge[i].val>x)
- {
- maxx=max(maxx,edge[i].val-x);cnt++;
- tag[edge[i].a]++,tag[edge[i].b]++,tag[edge[i].lca]-=;
- }
- else break;
- }
- if(!cnt) return true;
- dfs2(,);
- if(mem[cnt]) return mem[cnt]>=maxx;
- int Temp=;
- for(int i=;i<=n;i++)
- if(tag[i]==cnt) Temp=max(Temp,len[i]);
- mem[cnt]=Temp;return mem[cnt]>=maxx;
- return false;
- }
- inline void getans()
- {
- int le=,ri=Maxx;ans=Maxx;
- while(le<=ri)
- {
- int mid=(le+ri)/;
- if(check(mid)) ans=mid,ri=mid-;
- else le=mid+;
- }
- }
- int main()
- {
- //freopen("a.in","r",stdin);
- n=R(),m=R();int a,b,c;
- for(int i=;i<n;i++)
- {
- a=R(),b=R(),c=R();
- comb(a,b,c);Maxx+=c;
- }
- deep[]=;dfs1(,);
- for(int i=;i<=;i++)
- for(int j=;j<=n;j++)
- g[j][i]=g[g[j][i-]][i-];
- for(int i=;i<=m;i++)
- {
- a=R(),b=R();int lca=get(a,b);
- edge[i].a=a,edge[i].b=b;edge[i].val=dis[a]+dis[b]-*dis[lca];
- edge[i].lca=lca;
- }
- sort(edge+,edge+m+,cmp);
- getans();
- cout<<ans<<endl;
- return ;
- }
刷题总结——运输计划(bzoj4326)的更多相关文章
- BZOJ第一页刷题计划
BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2 ...
- Noip刷题计划
写在前面 去年也想刷10年NOIP来着..结果刷到13年就没动力了233... 今年一定要完成目标啊!! "愿你明日重生,醒时心存冬阳" 2018年 题目 首次得分 出错原因 考点 ...
- NOIP2015 运输计划(bzoj4326)
4326: NOIP2015 运输计划 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 886 Solved: 574[Submit][Status] ...
- [BZOJ4326][codevs4632][codevs5440][UOJ#150][NOIP2015]运输计划
[BZOJ4326][codevs4632][codevs5440][UOJ#150][NOIP2015]运输计划 试题描述 公元 2044 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n− ...
- bzoj4326 运输计划
4326: NOIP2015 运输计划 Time Limit: 30 Sec Memory Limit: 128 MB Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n ...
- BZOJ4326或洛谷2680 运输计划
BZOJ原题链接 洛谷原题链接 用\(LCA\)初始化出所有运输计划的原始时间,因为答案有单调性,所以二分答案,然后考虑检验答案. 很容易想到将所有超出当前二分的答案的运输计划所经过的路径标记,在这些 ...
- Codeforces刷题计划
Codeforces刷题计划 已完成:-- / -- [Codeforces370E]370E - Summer Reading:构造:(给定某些数,在空白处填数,要求不下降,并且相邻差值<=1 ...
- [CODEVS4632][BZOJ4326]运输计划
题目描述 Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球.小 P ...
- 【NOIP2015模拟11.4】JZOJ8月6日提高组T1 刷题计划
[NOIP2015模拟11.4]JZOJ8月6日提高组T1 刷题计划 题目 题解 题意 有\(n\)道题,编号为1~\(n\) 给出\(m\)次操作 每次操作有3种类型 1 \(x\) 表示交了\(A ...
随机推荐
- [dp]uestc oj E - 菲波拉契数制
E - 菲波拉契数制 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- kubernetes监控-prometheus(十六)
监控方案 cAdvisor+Heapster+InfluxDB+Grafana Y 简单 容器监控 cAdvisor/exporter+Prometheus+Grafana Y 扩展性好 容器,应用, ...
- stm32F042 (二) 按键触发中断
已经实现GPIO口输出高低电平控制LED,这里实现按键触发中断来改变LED闪亮的频率,因为PB3连着LED,所以PB3的输出模式没有改变,随意选一个GPIO口PA7接按键产生中断.因为nucleo开发 ...
- eubacteria|endosymbiosis|基因转移
5.11线粒体和叶绿体是通过内共生进化而来的 初始细胞俘获有功能的真细菌(eubacteria)进入细胞内,该细菌逐渐演化为细胞器,这种现象称为内共生(endosymbiosis),所以该细胞器携带细 ...
- VMware的centos的配置分区
/ ext3 8189 固定大小空 swap 509 固定大小/boot ext3 100 固定大小/home ext3 全部(使用全部可用空间) 利用的工具 AMFTP ...
- java中求几个字符串的最大公共子串 使用了比较器Comparator
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...
- React支持装饰器
在用mobx时用到了装饰器,无奈环境不支持装饰器,搜索了半天,网上教程乱七八糟,最后想到了babel官网上肯定有,一搜果然有,安装教程 见Babel官网. 最快捷的教程是官网文档
- 【STL学习笔记】一、STL体系
目录 1.标准库以header files形式呈现 2.namespce命名空间 3.STL与OO 4.STL六组件及其关系 5.STL组件例子 6.range-based for statement ...
- MySQL左右连接查询中的NULL的数据筛选问题
这里使用左连接为例子,对于左连接是将左边表的数据显示,右边表中如果没有对应的数据则使用null填充. game表: game_type表: SELECT g.name,g.type_id,t.type ...
- Spring AOP注解形式简单实现
实现步骤: 1:导入类扫描的注解解析器 命名空间:xmlns:context="http://www.springframework.org/schema/context" xsi ...