cogs1000 伊吹萃香 二维最短路
链接:http://cogs.pro/cogs/problem/problem.php?pid=1000
题意:有n个点,每一秒钟会从黑变白或从白变黑,黑到白额外费体力,白到黑省体力,还可以停在某个点,停白点不费体力,停黑点费体力,求到n点最省体力的多少。
初看这道题我们可能会被琐碎的情况搞晕,但是我们仔细观察可以发现:每一个点只有黑点白点两种情况,而且黑点之后一定是白点,白点之后一定是黑点,奇数秒颜色一样,偶数秒颜色一样。
因此思路便可得出:把每个点拆成奇数秒的点和偶数秒的点,每个点建边时只建下一秒到的点,停在本点就是奇点到偶点,偶点到奇点。
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 using namespace std; 6 const int maxn=5005,maxm=30005; 7 int n,m,dis[maxn<<1],id[maxn<<1],wei[maxn<<1]; 8 struct node 9 { 10 int from,to,weight,next; 11 }edge[(maxm<<1)+maxn]; 12 int head[maxn<<1],tot; 13 void addedge(int u,int v,int w) 14 { 15 edge[++tot]=(node){u,v,w,head[u]};head[u]=tot; 16 } 17 #include<queue> 18 bool inq[maxn<<1]; 19 void SPFA() 20 { 21 memset(dis,0x3f,sizeof(dis)); 22 dis[1]=0; 23 queue<int>q;q.push(1); 24 inq[1]=1; 25 while(!q.empty()) 26 { 27 int k=q.front();q.pop();inq[k]=0; 28 for(int i=head[k];i;i=edge[i].next) 29 { 30 int v=edge[i].to; 31 if(dis[v]>dis[k]+edge[i].weight) 32 { 33 dis[v]=dis[k]+edge[i].weight; 34 if(!inq[v]) 35 { 36 inq[v]=1; 37 q.push(v); 38 } 39 } 40 } 41 } 42 } 43 int haha() 44 { 45 freopen("suika.in","r",stdin); 46 freopen("suika.out","w",stdout); 47 scanf("%d%d",&n,&m); 48 for(int i=1;i<=n;i++) 49 { 50 int x;scanf("%d",&x); 51 id[(i<<1)-1]=x;id[(i<<1)]=x^1; 52 } 53 for(int i=1;i<=n;i++) 54 { 55 scanf("%d",&wei[(i<<1)]); 56 wei[(i<<1)-1]=wei[(i<<1)]; 57 } 58 for(int i=1;i<=n;i++) 59 { 60 int x;scanf("%d",&x); 61 if(id[(i<<1)]) 62 { 63 addedge(i<<1,(i<<1)-1,x); 64 addedge((i<<1)-1,i<<1,0); 65 } 66 else 67 { 68 addedge(i<<1,(i<<1)-1,0); 69 addedge((i<<1)-1,i<<1,x); 70 } 71 } 72 for(int i=1;i<=m;i++) 73 { 74 int u,v,w;scanf("%d%d%d",&u,&v,&w); 75 if(id[(u<<1)]&&!id[(v<<1)]) 76 { 77 addedge(u<<1,(v<<1)-1,w+abs(wei[(u<<1)]-wei[(v<<1)])); 78 addedge((u<<1)-1,v<<1,max(w-abs(wei[(u<<1)]-wei[(v<<1)]),0)); 79 } 80 else if(!id[(u<<1)]&&id[(v<<1)]) 81 { 82 addedge(u<<1,(v<<1)-1,max(w-abs(wei[(u<<1)]-wei[(v<<1)]),0)); 83 addedge((u<<1)-1,v<<1,w+abs(wei[(u<<1)]-wei[(v<<1)])); 84 } 85 else 86 { 87 addedge(u<<1,(v<<1)-1,w); 88 addedge((u<<1)-1,v<<1,w); 89 } 90 } 91 SPFA(); 92 printf("%d\n",min(dis[(n<<1)-1],dis[(n<<1)])); 93 } 94 int sb=haha(); 95 int main(){;}
cogs 1000
转载于:https://www.cnblogs.com/Loser-of-Life/p/7237419.html
cogs1000 伊吹萃香 二维最短路相关推荐
- POJ 1724 二维费用最短路
题目大意: 有N个城市,编号1-N 有R条路,每条路(单向)的起点为Si,终点为Di,长度为Li,如果要走这条路需要花Ti的钱 现在你只有K元钱,求在不超支的前提下,从1走到N需要的最短距离 这里总是 ...
- POJ1722二维spfa+优先队列优化
题意: 给你一个有向图,然后求从起点到终点的最短,但是还有一个限制,就是总花费不能超过k,也就是说每条边上有两个权值,一个是长度,一个是花费,求满足花费的最短长度. 思路: 一开 ...
- 二维稳态热传导 代码实现_博世壁挂炉发生故障代码及处理办法
博世bosch是来自德国的知名壁挂炉品牌,由于其出色的工艺技术,故障在同类产品中属于较低一类,国内业主普遍反映较好.那么,假如我们家里的博世燃气壁挂炉出现故障代码时,该如何解决呢?这里为大家就博世壁挂 ...
- 如何将二维数组作为函数的参数传递
如何将二维数组作为函数的参数传递 声明: 如果你是得道的大侠,这篇文章可能浪费你的时间,如果你坚持要看,我当然感觉很高 兴,但是希望你看完了别骂我!如果你发现我这篇文章有错误的话,你可以提出批评以及 ...
- Jetson Nano 从入门到实战(转载)(案例:Opencv配置、人脸检测、二维码检测)
目录 1. Jetson Nano简介 2. Jetson Nano环境配置 2.1 开箱配件介绍 2.2 烧录系统 2.3 开机和基本设置 2.4 开发环境配置 2.4.1 更新源和软件 2.4.2 ...
- Jetson Nano 从入门到实战(案例:Opencv配置、人脸检测、二维码检测)
目录 1. Jetson Nano简介 2. Jetson Nano环境配置 2.1 开箱配件介绍 2.2 烧录系统 2.3 开机和基本设置 2.4 开发环境配置 2.4.1 更新源和软件 2.4.2 ...
- 爱情之路(二维spfa)
爱情之路 题目描述: yh非常想念他的女朋友小y,于是他决定前往小y所在的那块大陆. 小y所在的大陆共有n个城市,m条双向路,每条路连接一个或两个城市.经过一条路ei需要耗费时间ti.此外,每条路均有 ...
- 用Direct3D设计二维横版过关动作类游戏的角色运动(双倍速、二段跳)
用Direct3D设计二维横版过关动作类游戏的角色运动 演示程序下载地址:http://download.csdn.net/detail/jiangcaiyang123/4278008 虽然大家使用D ...
- 条形码?二维码?生成、解析都在这里!
二维码生成与解析 一.生成二维码 二.解析二维码 三.生成一维码 四.全部的代码 五.pom依赖 直接上代码: 一.生成二维码 public class demo {private static fi ...
最新文章
- 芯片项目烂尾怎么办?国家发改委回应了!
- CTFshow php特性 web135
- 6-PSCI Power Domain Tree Structure
- 命名规范(1)大小写约定
- [LOJ3153] 三级跳(单调栈 + 线段树)
- Python学习之类和实例
- 今天你的静态变量和静态代码块执行了吗?
- overleaf创建表格
- Unix环境高级编程 centos中配置apue编译环境
- Retrofit2源码解析(一)
- 6. PHP之适配器模式
- TatukGIS - GisDefs - CanonicalSQLName 函数
- 短文本相似度比较:simHash简介以及java实现
- svn提交报错Previous operation has not finished; run 'cleanup' if it was interrupted
- android代码设置digits,andorid editext android:digits=abcdefghijklmnopqrstuvwxyz用代码写来控制规则该怎么写呢?...
- sublime中PyV8问题
- “放管服”改革背景下公安车驾管业务办理情况调研
- 医学图像处理常用的看图软件介绍及使用(RadiAnt DICOM Viewer、ITK-Snap和3D Slicer)
- hexo史上最全搭建教程(转载)
- WINCC做OPC UA服务器与第三方客户端连接测试
热门文章
- RM文件解析之RM文件格式
- GXT3.X的CheckBoxListView
- 转行学java好吗_转行学Java开发怎么样?
- 卓岚ZLAN串口服务器的配置及应用
- 区块链大本营的定位宣言——让区块链回归技术和应用的本质
- 解决div宽度设置width:100%后再设置padding或margin超出父元素的办法
- ip地址、域名、DNS、URL的区别与联系
- sql~~~~~~~~
- POI(excel) - WorkBook和Sheet
- 解决mybatis java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed