容易想到 这个环一定是简单环。

考虑如果是复杂环 那么显然对于其中的第一个简单环来说 要么其权值为负 如果为正没必要走一圈 走一部分即可。

对于前者 显然可以找到更小的 对于第二部分是递归定义的。

综上 这个环是一个简单环。

那么最多有n个点。

考虑枚举起点 然后 设f[i][j][k]表示从i到j经过k条边的最短路。

容易发现最终的答案为 f[i][i][w]<0 w.

不过这样做是n^4的。

考虑优化 容易想到二分 而上述状态其实本质上是一个矩阵乘法。

那么我们可以矩阵乘法在n^3logn的时间内得到二分出答案的矩阵。

但是这样正确性有点问题。考虑二分的答案并没有一定的单调性。

一个负环大小可能为3 长度为4时可能没有负环。

更改状态比较好 设f[i][j][k]表示从i到j <=k条边的最短路

这样负环就可以被我们保留下来了 关于这个转移 一个比较大胆的想法是 每次矩阵乘法之后对原矩阵取min.

看起来毫无道理 但是 容易发现这个取min操作相当于 做矩阵乘法时 对角线的值全部为0.

至此我们得到了一个普通意义 即 自己到自己有一个0条边的东西。

如果我们要求的答案为mid 那么显然 mid可以由两个小于mid的最短路组成。

从最优性来看这显然存在。所以这样做是正确的。

不过还需要优化复杂度。

考虑倍增出答案。预处理出矩阵即可。

复杂度n^3log.

const int MAXN=310,G=3;
int n,m,maxx,ans;
int b[MAXN][MAXN],c[MAXN][MAXN];
int a[12][MAXN][MAXN];
int main()
{
freopen("cycle.in","r",stdin);
freopen("cycle.out","w",stdout);
memset(a,0x3f,sizeof(a));
memset(b,0x3f,sizeof(b));
get(n);get(m);
rep(1,n,i)rep(1,n,j)a[0][i][j]=INF; rep(1,m,i)
{
int get(x),get(y),get(z);
a[0][x][y]=min(a[0][x][y],z);
}
rep(1,n,i)a[0][i][i]=0,b[i][i]=0;
maxx=9;
rep(1,maxx,w)
{
rep(1,n,i)rep(1,n,j)
{
int ww=INF;
rep(1,n,k)ww=min(ww,a[w-1][i][k]+a[w-1][k][j]);
a[w][i][j]=ww;
}
}
int flag=0;
rep(1,n,i)if(a[maxx][i][i]<0)flag=1;
if(!flag){puts("0");return 0;}
fep(maxx,0,w)
{
rep(1,n,i)rep(1,n,j)
{
int ww=INF;
rep(1,n,k)ww=min(ww,b[i][k]+a[w][k][j])%mod;
c[i][j]=ww;
}
flag=0;
rep(1,n,i)if(c[i][i]<0){flag=1;break;}
if(flag)continue;
rep(1,n,i)rep(1,n,j)b[i][j]=c[i][j];
ans=ans|(1<<w);
}
put(ans+1);
return 0;
}

4.28 省选模拟赛 负环 倍增 矩阵乘法 dp的更多相关文章

  1. 3.28 省选模拟赛 染色 LCT+线段树

    发现和SDOI2017树点涂色差不多 但是当时这道题模拟赛的时候不会写 赛后也没及时订正 所以这场模拟赛的这道题虽然秒想到了LCT和线段树但是最终还是只是打了暴力. 痛定思痛 还是要把这道题给补了. ...

  2. bzoj4773 负环 倍增+矩阵

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4773 题解 最小的负环的长度,等价于最小的 \(len\) 使得存在一条从点 \(i\) 到自 ...

  3. 4.28 省选模拟赛模拟赛 最佳农场 二维卷积 NTT

    第一次遇到二维卷积 不太清楚是怎么做的. 40分暴力比对即可. 对于行为或者列为1时 容易想到NTT做快速匹配.然后找答案即可. 考虑这是一个二维的比对过程. 设\(f_{i,j}\)表示以i,j为右 ...

  4. 省选模拟赛 Problem 3. count (矩阵快速幂优化DP)

    Discription DarrellDarrellDarrell 在思考一道计算题. 给你一个尺寸为 1×N1 × N1×N 的长条,你可以在上面切很多刀,要求竖直地切并且且完后每块的长度都是整数. ...

  5. 5.19 省选模拟赛 小B的夏令营 概率 dp 前缀和优化dp

    LINK:小B的夏令营 这道题是以前从没见过的优化dp的方法 不过也在情理之中. 注意读题 千万不要像我这个sb一样 考完连题意都不知道是啥. 一个长方形 要求从上到下联通的概率. 容易发现 K天只是 ...

  6. 4.11 省选模拟赛 序列 二分 线段树优化dp set优化dp 缩点

    容易想到二分. 看到第一个条件容易想到缩点. 第二个条件自然是分段 然后让总和最小 容易想到dp. 缩点为先:我是采用了取了一个前缀最小值数组 二分+并查集缩点 当然也是可以直接采用 其他的奇奇怪怪的 ...

  7. Qbxt 模拟赛 Day4 T2 gcd(矩阵乘法快速幂)

    /* 矩阵乘法+快速幂. 一开始迷之题意.. 这个gcd有个规律. a b b c=a*x+b(x为常数). 然后要使b+c最小的话. 那x就等于1咯. 那么问题转化为求 a b b a+b 就是斐波 ...

  8. 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解

    今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...

  9. @省选模拟赛03/16 - T3@ 超级树

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 一棵 k-超级树(k-SuperTree) 可按如下方法得到:取 ...

随机推荐

  1. 总结几个移动端H5软键盘的大坑

    1.部分机型软键盘弹起挡住原来的视图 解决方法:可以通过监听移动端软键盘弹起 Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内.参数如下. true,表示 ...

  2. Scala数据结构(二)

    一.集合的基础操作 1,head头信息 //获取集合的第一个元素 val list = List(,,) list.head // 2,tail尾信息 //获取集合除去头元素之外的所有元素 val l ...

  3. 转载--未看关于移动端Web远程开发调试

    移动端Web开发调试之Chrome远程调试(Remote Debugging) http://blog.csdn.net/freshlover/article/details/42528643 移动端 ...

  4. Webapi管理和性能测试工具WebBenchmark

    WebBenchmark是一款基于开源通讯组件Beetlex扩展的Webapi管理和性能测试工具,在传统工具中一般管理工具缺乏性能压测能力或有性能测试的缺少管理功能:WebBenchmark的设计目标 ...

  5. 如何科学地完成一场 AR 发布会?全在这份超细节活动策划 Xmind 里了

    你们在哪个酒店搭的景? 5 月 28 日,网易智慧企业完成了一场实景人物拍摄 + 虚拟舞台渲染的 AR 线上见面会.非常有趣的是,在直播过程中,不止一位观众问我们,“你们是在哪个酒店搭的景?”.看来我 ...

  6. Howdoo中文社区AMA总结(10月21日)

    10月21日Howdoo举办了中文社区的首次AMA活动,CEO -David Brierley和CMO -Jason Sibley加入到社群中与大家交流并回答社区成员的相关问题. 以下是精选的问题总结 ...

  7. 小程序报错 parameter.content should be String instead of Undefined;

    自己遇到了两种情况会导致这个问题 1.参数名写错未定义,然后赋值的时候值为undefined 2.服务端返回的值错误,返回的值为空,导致赋值时报错 解决方法: 1.检查参数名,如不是全局变量的应在da ...

  8. day59 django初识

    目录 一.借助wsgiref模块实现简易版web框架 二.动静态页面 三.python三大主流web框架 四.启动一个django项目 1 启动前的注意事项 1.1 计算机的问题 1.2 django ...

  9. Newbe.Claptrap 框架入门,第一步 —— 创建项目,实现简易购物车

    让我们来实现一个简单的 “电商购物车” 需求来了解一下如何使用 Newbe.Claptrap 进行开发. 业务需求 实现一个简单的 “电商购物车” 需求,这里实现几个简单的业务: 获取当前购物车中的商 ...

  10. 数据可视化之分析篇(三)Power BI总计行错误,这个技巧一定要掌握

    https://zhuanlan.zhihu.com/p/102567707 ​前一段介绍过一个客户购买频次统计的案例: Power BI 数据分析应用:客户购买频次分布. 我并没有在文章中显示总计行 ...