洛谷 AT2434 JOI 公園 (JOI Park) 题解
人生第一次AC黑题,我太感动了。
每日一题 day31 打卡
Analysis
先跑遍DJ,求出1到 i的最短路。
得到每个点到 1号点的距离后,从小到大排序一遍,这时便可以枚举每个点到 1号点的距离修筑地下隧道,每次将每个被枚举到的点加入一个集合(实际上可以由边权总和-与该点相连所有没有计入集合的边权总和)。
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<queue>
- #define int long long
- #define maxn 200000+10
- #define INF 2147483647
- using namespace std;
- inline int read()
- {
- int x=;
- bool f=;
- char c=getchar();
- for(; !isdigit(c); c=getchar()) if(c=='-') f=;
- for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
- if(f) return x;
- return -x;
- }
- inline void write(long long x)
- {
- if(x<){putchar('-');x=-x;}
- if(x>)write(x/);
- putchar(x%+'');
- }
- int n,m,c,max_d=-INF,ans,sum,cnt;
- int head[*maxn],book[maxn],vis[maxn];
- struct node
- {
- int u,v,w,nex;
- }edge[*maxn];
- struct node1
- {
- int dis,num;
- }x[maxn];
- inline bool cmp(node1 x,node1 y)
- {
- return x.dis<y.dis;
- }
- inline void add(int x,int y,int z)
- {
- edge[++cnt].u=x;
- edge[cnt].v=y;
- edge[cnt].w=z;
- edge[cnt].nex=head[x];
- head[x]=cnt;
- }
- inline void dijkstra()
- {
- priority_queue<pair<int,int> > q;
- for(int i=;i<=n;i++) x[i].dis=INF;
- memset(book,,sizeof(book));
- x[].dis=;
- q.push(make_pair(,));
- while(!q.empty())
- {
- int from=q.top().second;
- q.pop();
- if(book[from]) continue;
- book[from]=;
- for(int i=head[from];i;i=edge[i].nex)
- {
- int to=edge[i].v,val=edge[i].w;
- if(x[to].dis>x[from].dis+val)
- {
- x[to].dis=x[from].dis+val;
- q.push(make_pair(-x[to].dis,to));
- }
- }
- }
- }
- signed main()
- {
- n=read();m=read();c=read();
- for(int i=;i<=m;i++)
- {
- int x=read(),y=read(),z=read();
- add(x,y,z);
- add(y,x,z);
- sum+=z;
- }
- dijkstra();
- for(int i=;i<=n;i++) x[i].num=i;
- sort(x+,x+n+,cmp);
- vis[]=;
- int ans=sum;
- for(int i=;i<=n;i++)
- {
- vis[x[i].num]=;
- for(int j=head[x[i].num];j;j=edge[j].nex)
- if(vis[edge[j].v])
- sum-=edge[j].w;
- ans=min(ans,sum+x[i].dis*c);
- }
- write(ans);
- return ;
- }
请各位大佬斧正(反正我不认识斧正是什么意思)
洛谷 AT2434 JOI 公園 (JOI Park) 题解的更多相关文章
- 【AT2434】JOI 公園 (JOI Park) 最短路+贪心
题解 我的歪解 我首先想的是分治,我想二分肯定不行,因为它是没有单调性的. 我想了一下感觉它的大部分数据应该是有凸性的(例如\(y=x^2\)的函数图像),所以可以三分. 下面是我的三分代码(骗了不少 ...
- 洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心)
洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/132 ...
- 洛谷P3387 【模板】缩点 题解
背景 今天\(loj\)挂了,于是就有了闲情雅致来刷\(luogu\) 题面 洛谷P3387 [模板]缩点传送门 题意 给定一个\(n\)个点\(m\)条边有向图,每个点有一个权值,求一条路径,使路径 ...
- [NOI导刊2010提高&洛谷P1774]最接近神的人 题解(树状数组求逆序对)
[NOI导刊2010提高&洛谷P1774]最接近神的人 Description 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某 ...
- [洛谷P1029]最大公约数与最小公倍数问题 题解(辗转相除法求GCD)
[洛谷P1029]最大公约数与最小公倍数问题 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P, ...
- BZOJ5288 & 洛谷4436 & LOJ2508:[HNOI/AHOI2018]游戏——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5288 https://www.luogu.org/problemnew/show/P4436 ht ...
- BZOJ4943 & 洛谷3823 & UOJ315:[NOI2017]蚯蚓排队——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4943 http://uoj.ac/problem/315 https://www.luogu.or ...
- BZOJ1229 & 洛谷2917:[USACO2008 NOV]toy 玩具 & 洛谷4480:[BJWC2018]餐巾计划问题——题解
标题很长emmm…… [USACO2008 NOV]toy 玩具 https://www.luogu.org/problemnew/show/P2917 https://www.lydsy.com/J ...
- BZOJ3675 & 洛谷3648 & UOJ104:[Apio2014]序列分割——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3675 https://www.luogu.org/problemnew/show/P3648 ht ...
随机推荐
- vue中$router与$route的区别
$.router是VueRouter的实例,相当于一个全局的路由器对象.包含很多属性和子对象,例如history对象 $.route表示当前正在跳转的路由对象.可以通过$.route获取到name,p ...
- Helm命令帮助参数
# helm help The Kubernetes package manager To begin working with Helm, run the 'helm init' command: ...
- Unity项目 - 坦克大战3D TankBattle
目录 游戏原型 项目演示 绘图资源 代码实现 技术探讨 参考来源 游戏原型 游戏玩法:在有界的战场上,玩家将驾驶坦克,代表绿色阵营,与你的队友一起击溃红蓝阵营的敌人,在这场三方大战中夺得胜利! 操作指 ...
- ubuntu配置Selenium+Chromedriver
1.下载并安装最新的Google Chrome版本执行如下命令: wget https://dl.google.com/linux/direct/google-chrome-stable_curren ...
- Java的集合整理
1.List和Set都是接口,他们都继承于接口Collection,List是一个有序的可重复的集合,而Set的无序的不可重复的集合.Collection是集合的顶层接口,Collections是一个 ...
- 安装Ubuntu18.04系统
一.安装Ubuntu系统 进入系统安装的第一个界面,开始系统的安装操作.每一步的操作,左下角都会提示操作方式!! 1.选择系统语言-English 2.键盘设置-English 3.选择操作Insta ...
- 把时间戳转换为 datatime 格式
使用time timeStamp = 1381419600 timeArray = time.localtime(timeStamp) otherStyleTime = time.strftime(& ...
- Django form表单 组件
目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...
- Android数据存储原理分析
Android上常见的数据存储方式为: SharedPreferences是 Android 中比较常用的存储方法,本篇将从源码角度带大家分析一下Android中常用的轻量级数据存储工具SharedP ...
- Spring事务传播机制与隔离机制
详情查看 https://www.jianshu.com/p/249f2cd42692