题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4289

把边转化成点,同一个原有点相连的边中,边权小的向大的连差值的边,大的向小的连0的边;

一开始想的是给每个新点记一个点权是这个点(边)原来的权,走到它时先加上点权,因为要在原图上经过这条边还是要花费边权;

但是这样在原图中的边之间转移时会把它们的边权都加上,就不对了;

所以应该是把原图的边进一步拆成两个点,两端点的集合各加入一个,这两点之间连原边权的边;

题目上什么也没说...总之 dis 是 long long 的;

如果直接把刚才存边用的结构体放进 queue,就要注意把结构体的 w 定义成 ll,而且一定注意结构体内部定义变量的顺序!因为 (N){..., ...} 的写法是强调顺序的!

——然后发现这道题三个月前做过-_- https://www.cnblogs.com/Zinn/p/9326302.html

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#define pb push_back
using namespace std;
typedef long long ll;
int const xn=2e5+5,xm=1e5+5;
int n,m,s,t,hd[xn<<1],ct,to[xn<<3],nxt[xn<<3],w[xn<<3];
ll dis[xn<<1];
bool vis[xn<<1];
struct N{ll w; int id;//ll(dis)bool operator < (const N &y) const{return w<y.w;}
};
vector<N>v[xm];
priority_queue<N>q;
int rd()
{int ret=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=0; ch=getchar();}while(ch>='0'&&ch<='9')ret=(ret<<3)+(ret<<1)+ch-'0',ch=getchar();return f?ret:-ret;
}
void add(int x,int y,int z){to[++ct]=y; nxt[ct]=hd[x]; w[ct]=z; hd[x]=ct;}
void dij()
{while(q.size()){int x=q.top().id; q.pop();if(vis[x])continue; vis[x]=1;for(int i=hd[x],u;i;i=nxt[i]){if(dis[u=to[i]]>dis[x]+w[i])dis[u]=dis[x]+w[i],q.push((N){-dis[u],u});}}
}
int main()
{n=rd(); m=rd(); s=0; t=2*m+1;for(int i=1,x,y,z;i<=m;i++){x=rd(); y=rd(); z=rd();v[x].pb((N){z,i}); v[y].pb((N){z,i+m});add(i,i+m,z); add(i+m,i,z);}for(int i=0;i<v[1].size();i++)add(s,v[1][i].id,v[1][i].w);for(int i=0;i<v[n].size();i++)add(v[n][i].id,t,0);//0for(int i=1;i<=n;i++){sort(v[i].begin(),v[i].end());for(int j=1;j<v[i].size();j++)add(v[i][j-1].id,v[i][j].id,v[i][j].w-v[i][j-1].w),add(v[i][j].id,v[i][j-1].id,0);}memset(dis,0x3f,sizeof dis);dis[s]=0; q.push((N){0,s});dij(); printf("%lld\n",dis[t]);return 0;
}

转载于:https://www.cnblogs.com/Zinn/p/9802183.html

bzoj 4289 TAX —— 点边转化相关推荐

  1. 一句话题解(20170801~20170125)

    8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...

  2. 关于三维莫队问题的一些思考和探究

    关于三维莫队问题的一些思考和探究 手动博客搬家: 本文发表于20180919 15:41:25, 原地址https://blog.csdn.net/suncongbo/article/details/ ...

  3. 如何使柱状图左右展示_关于微生物门类堆叠柱状图,你知道的并不够

    写在前面 无论是堆叠柱状图,还是近年来会扩展的冲击图.基本都只能对门水平物种多样性进行可视化.然而即使是门水平,也不一定是全部的样本都适合使用堆叠柱状图可视化. 尤其是土壤等复杂的微生物群落的环境,往 ...

  4. 怎么在堆叠柱状图中体现百分比_微生物门类堆叠柱状图一文解决

    写在前面 无论是堆叠柱状图,还是近年来会扩展的冲击图.基本都只能对门水平物种多样性进行可视化.然而即使是门水平,也不一定是全部的样本都适合使用堆叠柱状图可视化. 尤其是土壤等复杂的微生物群落的环境,往 ...

  5. 单纯形法只有两个约束条件_线性规划之单纯形法【超详解+图解】

    使用单纯型法来求解线性规划,输入单纯型法的松弛形式,是一个大矩阵,第一行为目标函数的系数,且最后一个数字为当前轴值下的 z 值.下面每一行代表一个约束,数字代表系数每行最后一个数字代表 b 值. 算法 ...

  6. 线性规划之单纯形法【超详解+图解】

    1.作用 单纯形法是解决线性规划问题的一个有效的算法.线性规划就是在一组线性约束条件下,求解目标函数最优解的问题. 2.线性规划的一般形式 在约束条件下,寻找目标函数z的最大值. 3.线性规划的可行域 ...

  7. BZOJ 2131 免费的馅饼(DP,二维偏序问题 / 旋转坐标轴转化问题)【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2131 是 hydro 的 BZOJ ...

  8. BZOJ 3994: [SDOI2015]约数个数和 [莫比乌斯反演 转化]

    2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下 ...

  9. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  10. BZOJ 1592. Making the Grade(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x 目录 BZOJ 1592. Making the Grade 拓展问题一 拓展问 ...

最新文章

  1. 实体嵌入Entity Embedding及代码实现
  2. react部署之页面空白
  3. 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
  4. 产品设计思维工具(2019年做产品的一点总结)
  5. 【已解决】关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案...
  6. 留言板分页php,php留言板代码[经典的分页代码](1/4)
  7. leetcode Generate Parentheses python
  8. 区块链架构1.0、2.0与3.0梳理
  9. Python词频统计的3种方法
  10. 在Python中分词
  11. Bootstrap3和Bootstrap4区别
  12. 几何分布的概率和期望
  13. GAN之父离开苹果重返谷歌,SpaceX最新估值达1250亿美元,美国官方公布UFO进展,今日更多大新闻在此...
  14. Centos下如何永久修改系统时间 hwclock
  15. Android Hybrid开发实战之图片的交互
  16. 为什么静下心来阅读会是一种奢侈?
  17. 区块链学习7:超级账本项目Hyperledger与Fabric以及二者的关系
  18. 面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生
  19. 数字图像处理_冈萨雷斯_M函数编程简介
  20. [王垠系列]Braid - 一个发人深思的游戏

热门文章

  1. MyBatis的XML配置文件(一)
  2. [渝粤教育] 西南科技大学 语言学概论(汉语言文学) 在线考试复习资料
  3. 浏览器相关功能系统调用
  4. ubuntu16.04下ROS操作系统学习笔记(二)命令工具了解和仿真小海龟
  5. 键盘各键对应的ASCII码值(包括鼠标和键盘所有的键)
  6. [转]java applet
  7. ROS学习(六)—— 理解ROS节点
  8. kafka和mqtt的区别和联系
  9. zabbix3.4+grafana5.0.1数据可视化
  10. 【面向对象设计原则】之依赖倒置原则(DIP)