当前位置: 首页 > news >正文

GDSOI2015的某道题目

分析:

看到这个$3^i$就觉得很奇怪的样子...为什么一定要是$3^i$...而且不能重复使用...

不能重复使用就代表不会产生进位,那么一定是若干个$3^i$相加减的式子...

仔细观察,我们发现这是一个最短路径的问题,每个技能就是一条有向边,考虑要求能够用其他技能组合出来当前的技能,也就是说找到一条路径使得从当前技能的$a$出发不经过当前技能的那条边回到当前技能的$b$...这样就是说我们需要求出从每个点出发走向每个点的最短路和次短路,要求最短路和次短路的第一条边不相同...就可得到答案了...

有一个需要特别注意的点就是出现$a_i=b_i$的情况要特判一下...

代码:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
//by NeighThorn
#define inf 0x3f3f3f3f
using namespace std;

const int maxn=1600+5,maxm=20000+5;

int n,m,a[maxm],b[maxm],c[maxm],ans[maxm],del[maxm];
int cnt,w[maxm],hd[maxn],to[maxm],nxt[maxm],vis[maxn];
int dis[maxn][2],from[maxn][2]; 

inline void add(int x,int y,int s){
	w[cnt]=s;to[cnt]=y;nxt[cnt]=hd[x];hd[x]=cnt++;
}

inline void spfa(int x){
	memset(del,0,sizeof(del));
	memset(dis,inf,sizeof(dis));
	memset(from,inf,sizeof(from));
	queue<int> q;dis[x][0]=dis[x][1]=0;
	for(int i=hd[x];i!=-1;i=nxt[i]){
		if(dis[to[i]][0]>w[i]) dis[to[i]][1]=dis[to[i]][0],from[to[i]][1]=from[to[i]][0],dis[to[i]][0]=w[i],from[to[i]][0]=i;
		else if(dis[to[i]][1]>w[i]) dis[to[i]][1]=w[i],from[to[i]][1]=i;
		del[i]=1;
		if(!vis[to[i]])
			q.push(to[i]),vis[to[i]]=1;
	}
	while(!q.empty()){
		int top=q.front();q.pop();vis[top]=0;
		for(int i=hd[top],modi;i!=-1;i=nxt[i])
			if(!del[i]){
				modi=0;
				if(dis[top][0]+w[i]<dis[to[i]][0]){
					modi=1;
					if(from[to[i]][0]!=from[top][0]){
						dis[to[i]][1]=dis[to[i]][0],from[to[i]][1]=from[to[i]][0];
						dis[to[i]][0]=dis[top][0]+w[i],from[to[i]][0]=from[top][0];
					}
					else
						dis[to[i]][0]=dis[top][0]+w[i];
				}
				else if(dis[to[i]][1]>dis[top][0]+w[i]&&from[to[i]][0]!=from[top][0])
					modi=1,dis[to[i]][1]=dis[top][0]+w[i],from[to[i]][1]=from[top][0];
				if(dis[to[i]][1]>dis[top][1]+w[i]&&from[to[i]][0]!=from[top][1])
					modi=1,dis[to[i]][1]=dis[top][1]+w[i],from[to[i]][1]=from[top][1];
				if(modi&&!vis[to[i]])
					vis[to[i]]=1,q.push(to[i]);
			}
	}
	for(int i=hd[x];i!=-1;i=nxt[i])
		ans[i]=from[to[i]][0]==i?dis[to[i]][1]:dis[to[i]][0];
}

signed main(void){
	freopen("A.in","r",stdin);
	freopen("A.out","w",stdout);
	memset(hd,-1,sizeof(hd));
	scanf("%d%d",&n,&m);cnt=1;
	for(int i=1;i<=m;i++)
		scanf("%d%d%d",&a[i],&b[i],&c[i]),add(a[i],b[i]+n,c[i]);
	for(int i=1;i<=n;i++) add(i+n,i,0);
	for(int i=1;i<=n;i++) spfa(i);
	for(int i=1;i<=m;i++) printf("%d\n",ans[i]==inf?-1:ans[i]);
	return 0;
}

  


By NeighThorn

转载于:https://www.cnblogs.com/neighthorn/p/6695059.html

相关文章:

  • UVA 357 Let Me Count The Ways(全然背包)
  • dubbo zookepper
  • 【玩转Eclipse】——eclipse实现代码块折叠-类似于VS中的#region……#endregion
  • 百度贴吧帖子
  • 离散傅里叶变换蝶形运算分析
  • php基础知识(三)---常用函数--2017-04-16
  • js继承之一(借用构造函数)
  • 【转】使用SecureCRT连接ubuntu
  • 第八周总结
  • 函数初步接触
  • 2017.4.17 定制Eclipse的Content assist(代码补全),比如空格键 =键不上屏
  • Director.js路由
  • Java实现八进制正整数转化为十进制数
  • vim 设置默认显示行号
  • iOS APNs远程推送流程精简版
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【css3】浏览器内核及其兼容性
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 230. Kth Smallest Element in a BST
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • flutter的key在widget list的作用以及必要性
  • HTML中设置input等文本框为不可操作
  • httpie使用详解
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • java8-模拟hadoop
  • log4j2输出到kafka
  • Promise初体验
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 软件开发学习的5大技巧,你知道吗?
  • 设计模式 开闭原则
  • 跳前端坑前,先看看这个!!
  • ​ssh免密码登录设置及问题总结
  • ​TypeScript都不会用,也敢说会前端?
  • #vue3 实现前端下载excel文件模板功能
  • (八十八)VFL语言初步 - 实现布局
  • (分布式缓存)Redis持久化
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET面试题(二)
  • .NET委托:一个关于C#的睡前故事
  • .NET中的十进制浮点类型,徐汇区网站设计
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @ModelAttribute 注解
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [20171101]rman to destination.txt
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术