Graph
题目:
【问题描述】
给你一个有向图,有 N 个点,标号为 0 到 N -1,图中的每条边有个权值,每次你经过一条边,它的权值将被记入你的得分,如果同样的边被经过多次,它的权值每次都将被记入总分,权值为-499 到 499之间的整数,图中没有自环,现在你要从点 0 到点 1,这项任务必须在时限 T 或 T 之前完成,时间以秒记,每一秒你一定要走 S 步(不多不少),一步的含义是指从当前所在的点 U 沿着某条边( U , V )到达点 V ,若S>1的话,再沿着点V往(V,X)到达点X。你的目标就是完成任务并且得到尽量多的分数。
【输入格式】
第一行一个整数 N 表示该有向图的点数。接下来 N 行,每行有 N 个整数,第 i 行第 j 个数描述了点 i -1 到点 j- 1 之间的边的关系,如果是 0 ,表示它们之间没有边,否则这个数就是 i- > j 这条边的边权,保证第 i 行第 i 个数为 0。最后一行两个整数 S , T ,意义如题目所述。
【输出格式】
仅输出一行,如果不能完成,输出 IMPOSSIBLE,否则输出能够获得的最大分数。
【输入样例】
2
0 1
1 0
3 2
【输出样例】
3
【数据范围】
30%的数据,1≤ N , S , T ≤10。
100%的数据,1≤ N ≤50,1≤ S ≤100,1≤ T ≤109 。
题解:用f[i][j][t]表示从i到j,走t次的最大值
矩阵更新,预处理每两个点走一次的最大值
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL inf=0x3fffffffffffffff;
int n,S,T;
LL Ans;
struct Ma
{
LL val[][];
void clear()
{
for (int i=;i<n;i++)
for (int j=;j<n;j++)val[i][j]=-inf;
for (int i=;i<n;i++) val[i][i]=;
}
void write()
{
for (int i=;i<n;i++)
{
for (int j=;j<n;j++)printf("%lld ",val[i][j]);
puts("");
}
}
}M1,M2,M3,M4;
Ma times(Ma a,Ma b)
{
Ma c;
for (int i=;i<n;i++)
for (int j=;j<n;j++)
{
c.val[i][j] = -inf;
for (int k=;k<n;k++)
{
if (a.val[i][k]==-inf||b.val[k][j]==-inf)
continue;
c.val[i][j]=max(c.val[i][j],
a.val[i][k]+b.val[k][j]);
}
}
return c;
}
Ma Pow(Ma a,int b)
{
Ma Ans;
Ans.clear();
for (;b;b>>=,a=times(a,a))
if (b&) Ans=times(Ans,a);
return Ans;
}
void solve()
{
M3=Pow(M2,T-*n);
Ans=max(Ans,M3.val[][]);
for (int i=T-*n+;i<=T;i++)
{
M3=times(M3,M2);
Ans=max(Ans,M3.val[][]);
}
}
int main()
{
freopen("graph.in","r",stdin);
freopen("graph.out","w",stdout);
scanf("%d",&n);
for (int i=;i<n;i++)
for (int j=;j<n;j++)
{
scanf("%lld",&M1.val[i][j]);
if (M1.val[i][j]==)M1.val[i][j]=-inf;
}
scanf("%d%d",&S,&T);
M2=Pow(M1,S);
Ans=-inf;
M4.clear();
for (int i=;i<=min(T,*n);i++)
{
M4=times(M4,M2);
Ans=max(Ans,M4.val[][]);
}
if (T>=*n+) solve();
if (Ans==-inf) puts("IMPOSSIBLE");
else printf("%lld\n",Ans);
return ;
}
Graph的更多相关文章
- [开发笔记] Graph Databases on developing
TimeWall is a graph databases github It be used to apply mathematic model and social network with gr ...
- Introduction to graph theory 图论/脑网络基础
Source: Connected Brain Figure above: Bullmore E, Sporns O. Complex brain networks: graph theoretica ...
- POJ 2125 Destroying the Graph 二分图最小点权覆盖
Destroying The Graph Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8198 Accepted: 2 ...
- [LeetCode] Number of Connected Components in an Undirected Graph 无向图中的连通区域的个数
Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...
- [LeetCode] Graph Valid Tree 图验证树
Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...
- [LeetCode] Clone Graph 无向图的复制
Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...
- 讲座:Influence maximization on big social graph
Influence maximization on big social graph Fanju PPT链接: social influence booming of online social ne ...
- zabbix利用api批量添加item,并且批量配置添加graph
关于zabbix的API见,zabbixAPI 1item批量添加 我是根据我这边的具体情况来做的,本来想在模板里面添加item,但是看了看API不支持,只是支持在host里面添加,所以我先在一个ho ...
- Theano Graph Structure
Graph Structure Graph Definition theano's symbolic mathematical computation, which is composed of: A ...
- 纸上谈兵: 图 (graph)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 图(graph)是一种比较松散的数据结构.它有一些节点(vertice),在某些节 ...
随机推荐
- P4396 [AHOI2013]作业
题目链接 luogu4396 思路 唯有水题暖人心 咕了4天,今天跟着std对拍才做出来不得不说题解真的水的一批 先离散化一下 第一问差分询问,权值树状数组套一套就好了 \(nlog_{n}\) 第二 ...
- 【复制虚拟机】虚拟机复制后无ip的问题
先编辑虚拟机选项,把网络适配器删掉后保存,再重新添加网络适配器 然后开机 编辑文件/etc/udev/rules.d/70-persistent-net.rules,进去之后是这个样子 把前两个删掉, ...
- The way to Go(2): 语言的主要特性与发展的环境和影响因素
Reference: Github: Go Github: The way to Go 语言的主要特性与发展的环境和影响因素 现有编程语言对于Go语言发展的影响: Why Go? C/C++ 的发展速 ...
- Qt5_自定义处理Windows消息函数
ZC:(1).“#include <QAbstractNativeEventFilter>”,(2).貌似 返回True(意思是 处理过了) 返回False(意思是还需要继续处理) 1.参 ...
- java中的值传递和引用传递用法详解
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值. 引用传递:也称为传地址.方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对 ...
- typeof
1.用法 typeof num typeof(num) 2.返回值 "number"."string"."boolean"." ...
- English trip -- VC(情景课)10 C I like to watch TV. 我爱看电视
Grammar focus 语法点: like to do you do they What does he like to do? does she Practice 练习 ...
- 20170523xlVBA多条件分类求和一例
Public Sub NextSeven_CodeFrame() Application.ScreenUpdating = False Application.DisplayAlerts = Fals ...
- 20170609批量生成WORD合同
Sub NextSeven_CodeFrame() Application.ScreenUpdating = False Application.DisplayAlerts = False Appli ...
- layui的富文本编辑器怎么赋值
除了上面讲的方法外,还可以使用layedit自带的方法赋值/*** 设置编辑器内容* @param {[type]} index 编辑器索引* @param {[type]} content 要设置的 ...