bzoj 4289 TAX —— 点边转化
题目: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 —— 点边转化相关推荐
- 一句话题解(20170801~20170125)
8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...
- 关于三维莫队问题的一些思考和探究
关于三维莫队问题的一些思考和探究 手动博客搬家: 本文发表于20180919 15:41:25, 原地址https://blog.csdn.net/suncongbo/article/details/ ...
- 如何使柱状图左右展示_关于微生物门类堆叠柱状图,你知道的并不够
写在前面 无论是堆叠柱状图,还是近年来会扩展的冲击图.基本都只能对门水平物种多样性进行可视化.然而即使是门水平,也不一定是全部的样本都适合使用堆叠柱状图可视化. 尤其是土壤等复杂的微生物群落的环境,往 ...
- 怎么在堆叠柱状图中体现百分比_微生物门类堆叠柱状图一文解决
写在前面 无论是堆叠柱状图,还是近年来会扩展的冲击图.基本都只能对门水平物种多样性进行可视化.然而即使是门水平,也不一定是全部的样本都适合使用堆叠柱状图可视化. 尤其是土壤等复杂的微生物群落的环境,往 ...
- 单纯形法只有两个约束条件_线性规划之单纯形法【超详解+图解】
使用单纯型法来求解线性规划,输入单纯型法的松弛形式,是一个大矩阵,第一行为目标函数的系数,且最后一个数字为当前轴值下的 z 值.下面每一行代表一个约束,数字代表系数每行最后一个数字代表 b 值. 算法 ...
- 线性规划之单纯形法【超详解+图解】
1.作用 单纯形法是解决线性规划问题的一个有效的算法.线性规划就是在一组线性约束条件下,求解目标函数最优解的问题. 2.线性规划的一般形式 在约束条件下,寻找目标函数z的最大值. 3.线性规划的可行域 ...
- BZOJ 2131 免费的馅饼(DP,二维偏序问题 / 旋转坐标轴转化问题)【BZOJ 修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2131 是 hydro 的 BZOJ ...
- BZOJ 3994: [SDOI2015]约数个数和 [莫比乌斯反演 转化]
2015 题意:\(d(i)\)为i的约数个数,求\(\sum\limits_{i=1}^n \sum\limits_{j=1}^m d(ij)\) \(ij\)都爆int了.... 一开始想容斥一下 ...
- BZOJ.1558.[JSOI2009]等差数列(线段树 差分)
BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...
- BZOJ 1592. Making the Grade(思维,数据结构优化DP,以及三个拓展问题)[Usaco2008 Feb]【BZOJ计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x 目录 BZOJ 1592. Making the Grade 拓展问题一 拓展问 ...
最新文章
- 实体嵌入Entity Embedding及代码实现
- react部署之页面空白
- 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
- 产品设计思维工具(2019年做产品的一点总结)
- 【已解决】关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案...
- 留言板分页php,php留言板代码[经典的分页代码](1/4)
- leetcode Generate Parentheses python
- 区块链架构1.0、2.0与3.0梳理
- Python词频统计的3种方法
- 在Python中分词
- Bootstrap3和Bootstrap4区别
- 几何分布的概率和期望
- GAN之父离开苹果重返谷歌,SpaceX最新估值达1250亿美元,美国官方公布UFO进展,今日更多大新闻在此...
- Centos下如何永久修改系统时间 hwclock
- Android Hybrid开发实战之图片的交互
- 为什么静下心来阅读会是一种奢侈?
- 区块链学习7:超级账本项目Hyperledger与Fabric以及二者的关系
- 面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生
- 数字图像处理_冈萨雷斯_M函数编程简介
- [王垠系列]Braid - 一个发人深思的游戏
热门文章
- MyBatis的XML配置文件(一)
- [渝粤教育] 西南科技大学 语言学概论(汉语言文学) 在线考试复习资料
- 浏览器相关功能系统调用
- ubuntu16.04下ROS操作系统学习笔记(二)命令工具了解和仿真小海龟
- 键盘各键对应的ASCII码值(包括鼠标和键盘所有的键)
- [转]java applet
- ROS学习(六)—— 理解ROS节点
- kafka和mqtt的区别和联系
- zabbix3.4+grafana5.0.1数据可视化
- 【面向对象设计原则】之依赖倒置原则(DIP)