【JZOJ4597】现世斩
Description
异变又发生了,魂魄妖梦作为幻想乡的一名自(cheng)机(guan),主动前去解决异变。
我们用一个n个点、m条边的无向联通图来表示妖梦可选择的路线,妖梦从白玉楼出发,白玉楼被视为编号为1的点,编号为2——n的点是幻想乡的村庄,其中编号为n的村庄发生了异变。
每条边上可能会有一些妖怪袭击人类(然而妖梦是半人半灵),所以对于第i条边,妖梦需要t[i]分钟通过这条路。妖梦带了她的人符[现世斩],可以使所有连接点x的边的通过时间变成1(x可以任意指定)。然而为了保留足够的力量解决异变,妖梦只会用这个符卡一次。妖梦想知道,她到达村庄n的最短时间是多少。
Solution
跟GDOI2016第二天的第一题好像啊!
不过我换了一种方法。
先从1到n做一遍dij,然后再从n到1做一遍dij。
每次枚举一个中间点x,然后求出min{d[1,u]}和min{d[v,n]},u和v与x直接相连,最后用d[1,u]+d[v,n]+2来更新最优答案就行。复杂度O(nm)。
Code
#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;const int maxn=100005,maxm=1000005;typedef long long LL;int n,m,tot,h[maxn],e[maxm],next[maxm],len[maxm],pos[maxn],id[maxn];LL f1[maxn],f2[maxn],ans;char c;int read()
{for (c=getchar();c<'0' || c>'9';c=getchar());int x=c-48;for (c=getchar();c>='0' && c<='9';c=getchar()) x=x*10+c-48;return x;
}void add(int x,int y,int l)
{e[++tot]=y; next[tot]=h[x]; len[tot]=l; h[x]=tot;
}void Up(int x,LL *f)
{while (x>1 && f[id[x/2]]>f[id[x]]){id[x/2]^=id[x]^=id[x/2]^=id[x];pos[id[x]]=x;x/=2;}pos[id[x]]=x;
}void Down(int x,LL *f)
{while (x*2<=tot){int son=(x*2==tot || f[id[x*2]]<f[id[x*2+1]])?x*2:x*2+1;if (f[id[x]]<=f[id[son]]) break;id[x]^=id[son]^=id[x]^=id[son];pos[id[x]]=x;x=son;}pos[id[x]]=x;
}void Dij(int x,LL *f)
{for (int i=1;i<=n;i++) f[i]=1e16;f[x]=0;tot=1;id[1]=x; pos[x]=1;for (int i=1;i<=n;i++) if (i!=x){id[++tot]=i; pos[i]=tot;}for (int i=1;i<=n;i++){int x=id[1];id[1]=id[tot--]; pos[id[1]]=1;Down(1,f);for (int j=h[x];j;j=next[j]) if (f[x]+len[j]<f[e[j]]){f[e[j]]=f[x]+len[j]; Up(pos[e[j]],f);}}
}int main()
{freopen("cut.in","r",stdin); freopen("cut.out","w",stdout);n=read(); m=read();while (m--){int x=read(),y=read(),l=read();add(x,y,l); add(y,x,l);}Dij(1,f1); Dij(n,f2);ans=f1[0]=f2[0]=1e16;for (int i=h[1];i;i=next[i]) ans=min(ans,f2[e[i]]+1);for (int i=h[n];i;i=next[i]) ans=min(ans,f1[e[i]]+1);for (int i=2;i<n;i++){int x=0,y=0;for (int j=h[i];j;j=next[j]){if (f1[e[j]]<f1[x]) x=e[j];if (f2[e[j]]<f2[y]) y=e[j];}ans=min(ans,f1[x]+f2[y]+2);}printf("%lld\n",ans);fclose(stdin); fclose(stdout);return 0;
}
【JZOJ4597】现世斩相关推荐
- JZOJ4597. 现世斩 题解
题目 Description 异变又发生了,魂魄妖梦作为幻想乡的一名自(cheng)机(guan),主动前去解决异变. 我们用一个n个点.m条边的无向联通图来表示妖梦可选择的路线,妖梦从白玉楼出发,白 ...
- 【NOIP2016模拟7.9】现世斩
Description 异变又发生了,魂魄妖梦作为幻想乡的一名自(cheng)机(guan),主动前去解决异变. 我们用一个n个点.m条边的无向联通图来表示妖梦可选择的路线,妖梦从白玉楼出发,白玉楼被 ...
- 【JZOJ 4597】 现世斩
Description 异变又发生了,魂魄妖梦作为幻想乡的一名自(cheng)机(guan),主动前去解决异变. 我们用一个n个点.m条边的无向联通图来表示妖梦可选择的路线,妖梦从白玉楼出发,白玉楼被 ...
- 【JZOJ 4597】现世斩
Description 异变又发生了,魂魄妖梦作为幻想乡的一名自(cheng)机(guan),主动前去解决异变. 我们用一个n个点.m条边的无向联通图来表示妖梦可选择的路线,妖梦从白玉楼出发,白玉楼被 ...
- 【jzoj4597】【现世斩】【平衡树】【set】
题目大意 给出有权无向连通图,有一次机会使与一个点相连的边的权变为一,求最短路. 题解 显然的想法是学习gdoi2016的一题,分层单源最短路,设f[i][0,2],表示没有用机会,在前驱用机会,没有 ...
- 科大讯飞的2018:深陷同传造假及炒房风波,市值遭腰斩蒸发600亿
https://www.toutiao.com/a6654740002490024452/ 2019-02-06 12:29:58 近日,科大讯飞董事长刘庆峰公开回应外界对公司的诸多质疑,称科大讯飞创 ...
- 溃不成军:科通芯城一度再跌近30% 股价三天腰斩
在昨日跌逾20%后,遭做空机构连续狙击的港股科通芯城,今日上午一度再跌28%,最低报4.29港元.过去三个交易日,科通芯城股价已惨遭腰斩. 科通芯城董事长康敬伟表示,"目前科通芯城不再就其相 ...
- [LGP4707] 重返现世
世界是物质的,物质是运动的,运动是有规律的,规律是可以被认识的. 关于期望意义下min-max容斥,我们认为每个事件的时间来认识事件,max/min S表示集合S中所有时间最后/最前出现的事件,E(m ...
- 3D角色设定全析百图斩
我们在3D角色模型与动画设定上积累厚实,在卡噗角色设定中,我们做了很多的风格尝试以及整体配饰穿搭,去达到新锐时尚的品牌目标.回看角色设定已超过100体,在此分享整体设计思路过程与百图斩. 早期卡噗设计 ...
最新文章
- php ile_get_contents无法请求https连接的解决方法
- Navicat for Oracle工具连接oracle
- python语言命名规定首字符不能是_python标识符命名规范原理解析
- 本地tomcat的start.bat启动时访问不出现小猫图标
- 面向对象初调用:foolish 电梯
- WiresShark 图解教程1
- javawebday30(验证码在客户端 用当前时间来请求下一张图片 VerifyCode代码)
- EPS PanSystem v3.4.0 Full 1CD(解析试井解释软件)\
- Fama-French五因子模型实用攻略
- 汽车发动机电子控制技术
- 英语 1038个词根 后缀217个!
- 5G+工业互联网行业解决方案
- 服务器部署项目拓扑图,cdn服务器部署拓扑图
- centos7开启网卡功能
- RAM的 Parity 与 ECC
- mysql创建表格例子_Mysql创建表例子 | restcy 技术博客
- 渗透神器burpsuite的汉化
- 微软SQL服务器登录,Microsoft SQL Server 【Windows 身份验证】和 【sa】都无法登录的解决方案...
- 微信广告转化统计java,百度推广oCPC微信号复制转化次数统计系统数据接口
- 计算机云计算服务外包,云计算上的三类外包计算
热门文章
- VB:如何设置Richtextbox的行间距
- oracle 索引基本原理
- 【乱入】Uva11021麻球繁衍
- 专业系统维护:CleanMyMac X for mac
- 未能找到引用的组件“Microsoft.Office.Core”
- 出现错误(已解决)RuntimeError: CUDA error: no kernel image is available for execution on the device CUDA ker
- UnityStandardAsset工程、源码分析_5_赛车游戏[AI控制]_AI机制
- 学校食堂剩餐怎么办?智慧食堂解决方案来了
- deinterlace 隔行 progressive 逐行 3:2pulldown
- 计算机相关先锋队名称,励志团队名称和口号大全_团队励志队名口号大全