人生第一次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) 题解的更多相关文章

  1. 【AT2434】JOI 公園 (JOI Park) 最短路+贪心

    题解 我的歪解 我首先想的是分治,我想二分肯定不行,因为它是没有单调性的. 我想了一下感觉它的大部分数据应该是有凸性的(例如\(y=x^2\)的函数图像),所以可以三分. 下面是我的三分代码(骗了不少 ...

  2. 洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心)

    洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/132 ...

  3. 洛谷P3387 【模板】缩点 题解

    背景 今天\(loj\)挂了,于是就有了闲情雅致来刷\(luogu\) 题面 洛谷P3387 [模板]缩点传送门 题意 给定一个\(n\)个点\(m\)条边有向图,每个点有一个权值,求一条路径,使路径 ...

  4. [NOI导刊2010提高&洛谷P1774]最接近神的人 题解(树状数组求逆序对)

    [NOI导刊2010提高&洛谷P1774]最接近神的人 Description 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某 ...

  5. [洛谷P1029]最大公约数与最小公倍数问题 题解(辗转相除法求GCD)

    [洛谷P1029]最大公约数与最小公倍数问题 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P, ...

  6. BZOJ5288 & 洛谷4436 & LOJ2508:[HNOI/AHOI2018]游戏——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5288 https://www.luogu.org/problemnew/show/P4436 ht ...

  7. BZOJ4943 & 洛谷3823 & UOJ315:[NOI2017]蚯蚓排队——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4943 http://uoj.ac/problem/315 https://www.luogu.or ...

  8. BZOJ1229 & 洛谷2917:[USACO2008 NOV]toy 玩具 & 洛谷4480:[BJWC2018]餐巾计划问题——题解

    标题很长emmm…… [USACO2008 NOV]toy 玩具 https://www.luogu.org/problemnew/show/P2917 https://www.lydsy.com/J ...

  9. BZOJ3675 & 洛谷3648 & UOJ104:[Apio2014]序列分割——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3675 https://www.luogu.org/problemnew/show/P3648 ht ...

随机推荐

  1. pycharm爬取网页数据

    1 python环境的配置 1.1 安装python文件包,放到可以找到的位置 1.2 右键计算机->属性->高级环境设置->系统变量->Path->编辑->复制p ...

  2. 同一个Tomcat部署多个springboot项目问题

    2018-12-13 10:37:21,412 ERROR [localhost-startStop-2] c.a.d.s.DruidDataSourceStatManager [DruidDataS ...

  3. Mysql字符集之utf8和utf8mb4的使用问题

    Mysql之utf8和utf8mb4的区别 最近在项目中使用Mysql数据库保存emoji表情 

  4. 手写RPC框架(netty+zookeeper)

    RPC是什么?远程过程调用,过程就是业务处理.计算任务,像调用本地方法一样调用远程的过程. RMI和RPC的区别是什么?RMI是远程方法调用,是oop领域中RPC的一种实现,我们熟悉的restfull ...

  5. 10 查询字符串,X字段必须包含(不包含)XX;_all原理

    指定某个字段,必须要包含XX字符 GET /beauties/my/_search?q=Name:Chang Wei   搜出 某个字段不包含XX字符 的所有内容 GET /beauties/my/_ ...

  6. spring boot 集成mybatis plus 含分页 完整教程

    一.添加依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus ...

  7. HTML学习摘要3

    DAY 3 浏览器会自动地在标题的前后添加空行 默认情况下,HTML 会自动地在块级元素前后添加一个额外的空行,比如段落.标题元素前后. <hr /> 标签在 HTML 页面中创建水平线. ...

  8. day34-python之进程调用

    1.信号量 import threading,time class myThread(threading.Thread): def run(self): if semaphore.acquire(): ...

  9. AOP初识

    AOP是Aspect Oriented Programing的简称,面向切面编程.AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理.缓存.对象池管理以及日志记录.AOP将这些分散在各 ...

  10. linux基础命令之1

    1.创建文件夹:mkdir 文件夹名称 2.创建文件:touch  文件名称 3.编辑文件:vi 文件名称 4.保存文件::wq