B. Wycieczki

题目描述

给定一张n个点m条边的带权有向图,每条边的边权只可能是1,2,3中的一种。
将所有可能的路径按路径长度排序,请输出第k小的路径的长度,注意路径不一定是简单路径,即可以重复走同一个点。

输入格式

第一行包含三个整数n,m,k(1<=n<=40,1<=m<=1000,1<=k<=10^18)。
接下来m行,每行三个整数u,v,c(1<=u,v<=n,u不等于v,1<=c<=3),表示从u出发有一条到v的单向边,边长为c。
可能有重边。

输出格式

包含一行一个正整数,即第k短的路径的长度,如果不存在,输出-1。

样例

样例输入

6 6 11
1 2 1
2 3 2
3 4 2
4 5 1
5 3 1
4 6 3

样例输出

4

数据范围与提示

长度为1的路径有1->2,5->3,4->5。
长度为2的路径有2->3,3->4,4->5->3。
长度为3的路径有4->6,1->2->3,3->4->5,5->3->4。
长度为4的路径有5->3->4->5。

这道题时间跨度比较长了,主要是因为这道题贼难调,稍有不慎就会WA,而且这道题的测试点贼多,多到会出现2分情况,所以真的是我的签名说的,一杯茶一包纸,一份代码调成X

其实这道题还算好像,而且有思维量,主要就是要把边的矩阵拆点,然后建边,注意需点,也就是整个矩阵会扩大三倍;整个题其实就是二分(我打了一半,跑的实在是太慢了,所以换了一种方法)倍增,倍增就和求lca其实是一样的,就是换成了矩阵,不知其他神犇是怎么打的,反正我是使用结构体,但是要注意细节,整个卡了一晚上,就是因为矩阵传参没加取地址,加上就A了,有神犇知道为啥的就留言吧

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
#define LL long long
#define re register
#define F(i,a,b) for(LL i=a;i<=b;i++)
LL n,m,u,v,d,t;
long long s,k;
bool flag;
inline LL read()
{re LL ss=0;char bb=getchar();while(bb<48||bb>57)bb=getchar();while(bb>=48&&bb<=57)ss=(ss<<1)+(ss<<3)+(bb^48),bb=getchar();return ss;
}
struct Martix
{LL x[250][250];void init(){memset(x,0,sizeof(x));}
}mul[125],tmp;
Martix bg,base,now;
void made(Martix &a,Martix &b,Martix &c)
{flag=1;tmp.init();F(i,1,3*n+1)F(l,1,3*n+1){if(!a.x[i][l])continue;//debug(i);debug(l);F(j,1,3*n+1)tmp.x[i][j]=tmp.x[i][j]+a.x[i][l]*b.x[l][j];if(i==1&&tmp.x[i][3*n+1]>=k)flag=0;                    }c=tmp;
}
int main()
{//freopen("cnm.txt","r",stdin);n=read(),m=read(),k=read();F(i,1,n){bg.x[1][i]=1;base.x[i][i+n]=1;base.x[i+n][i+2*n]=1;}while(m--){u=read(),v=read(),d=read();base.x[u+(d-1)*n][v]++;base.x[u+(d-1)*n][3*n+1]++;}base.x[3*n+1][3*n+1]=1;mul[0]=base;for(;t<=63;t++){    if(t)made(mul[t-1],mul[t-1],mul[t]);made(bg,mul[t],now);if(!flag||now.x[1][3*n+1]>=k){break;}}t--;if(t==63&&now.x[1][3*n+1]<k){puts("-1");return 0;}for(LL i=t;i>=0;i--){made(bg,mul[i],now);if(flag&&now.x[1][3*n+1]<k){s+=(1ll<<i);bg=now;}}printf("%lld\n",s+1);
}

hhh

endl;

转载于:https://www.cnblogs.com/hzoi-lsc/p/11209856.html

Wycieczki 线性代数相关推荐

  1. NVIDIA GPU上的Tensor线性代数

    NVIDIA GPU上的Tensor线性代数 cuTENSOR库是同类中第一个GPU加速的张量线性代数库,提供张量收缩,归约和逐元素运算.cuTENSOR用于加速在深度学习训练和推理,计算机视觉,量子 ...

  2. GPU上稀疏矩阵的基本线性代数

    GPU上稀疏矩阵的基本线性代数 cuSPARSE库为稀疏矩阵提供了GPU加速的基本线性代数子例程,这些子例程的执行速度明显快于仅CPU替代方法.提供了可用于构建GPU加速求解器的功能.cuSPARSE ...

  3. GPU上的基本线性代数

    GPU上的基本线性代数 cuBLAS库提供了基本线性代数子例程(BLAS)的GPU加速实现.cuBLAS通过针对NVIDIA GPU进行了高度优化的嵌入式行业标准BLAS API来加速AI和HPC应用 ...

  4. 线性代数--矩阵、向量

    线性代数 线性代数 矩阵及其运算 矩阵分块法 矩阵的初等变换于线性方程组 矩阵的初等变换 矩阵的秩 线性方程组的解 向量组的线性相关性 向量组及其线性组合 向量组的线性相关性 线性代数 矩阵及其运算 ...

  5. 基于C++模板的线性代数库---Eigen

    Eigen 是一个基于C++模板的线性代数库,直接将库下载后放在项目目录下,然后包含头文件就能使用,非常方便.此外,Eigen的接口清晰,稳定高效. 在解决方案"属性"中的&quo ...

  6. 矩阵计算在计算机科学中,开发者必读:计算机科学中的线性代数(附论文)

    来源:机器之心 作者:Petros Drineas.Michael W. Mahoney 本文共3994字,建议阅读6分钟.本文为你分享一篇来自普渡大学与UC Berkeley两位教授的概述论文中的线 ...

  7. 2021-2022-1 线性代数知识点总结的视频

    01 线性方程组 02 矩阵及其运算 03 向量空间(上) 03 向量空间(下) 04 特征值与特征向量 05 实对称矩阵与二次型 2021 线性代数 第三章 习题课 2021 线性代数 第四章 习题 ...

  8. 【通知】2021-2022-1线性代数课程答疑安排

    2021-2022-1线性代数课程答疑安排 本学期线性代数课程答疑安排如下: 答疑时间:每周二 13:00-14:30: 答疑地点:教七楼202(信息教研室): 答疑教师排班如下: 第五周:李鹏,马建 ...

  9. 线性代数:05 实对称矩阵与二次型

    本讲义是自己上课所用幻灯片,里面没有详细的推导过程(笔者板书推导)只以大纲的方式来展示课上的内容,以方便大家下来复习. 本章是特征值与特征向量知识的延续,根据谱定理可知实对称矩阵可以正交对角化,对角阵 ...

最新文章

  1. 贾扬清:我对人工智能方向的一点浅见
  2. 7 年“键盘手”没在意!某程序员手疼查出骨肿瘤,已让骨头成了“豆腐渣”
  3. 9.9学python靠谱吗-走进小学教材,Python何德何能?9图对比道出真相
  4. C# 学习笔记(9)线程
  5. 抽取样本java实验报告_一个自定义classloader的函数抽取壳样本
  6. 日语输入法电脑版_日语输入法下载及使用教程【建议收藏】
  7. 以智能数据架构,挖掘增长金矿
  8. 从根儿上理解mysql_从根儿上理解 MySQL - 页总结
  9. 已知斜边和角度求邻边_从数学史角度看数系发展
  10. php一个入口 nginx 自动带斜线,Nginx 自动加斜杠
  11. 从代码规范学到的细节
  12. word是不是计算机硬件,word及excel模拟试题1_计算机硬件及应用_IT/计算机_资料
  13. Codevs 1506 传话
  14. Linux系统修改编码(转)
  15. InstallShield安装过程介绍
  16. Mybatis源码编译
  17. matlab文本文件操作
  18. 谷歌浏览器mac切换标签快捷键
  19. win2008计算机无法访问,win2008共享资源无法访问故障的应对措施
  20. pkusc 2018 滚粗

热门文章

  1. android 仿携程选择城市,类似携程商旅的城市选择器 CityPicker
  2. 提高篇 第四部分 数据结构 第2章 RMQ问题
  3. 计算机控制作业及答案,《微机系统与维护》课程作业及答案(二)
  4. VMWare笔记-解决虚拟机能ping通主机能上网,但主机ping不通虚拟机(含思路)
  5. SQL笔记-通过构建索引表方便数据库管理
  6. C语言工作笔记-函数指针的使用(补充C回调系统)
  7. Qt creator5.7 OpenCV249之均值滤波(含源码下载)
  8. mysql round 0.1111_听说Mysql你很豪横?-------------分分钟带你玩转SQL高级查询语句(库函数,存储过程)...
  9. python创建角色_如何使用 Python 创建一名可操控的角色玩家
  10. 面试题 gety() getTop() TranslationY关系