题目大意:给定一个有向图,其中边有边权。求点数最少的正环的点数。

题解:建立矩阵,处理其二进制上每一位的状态。时间O(n^3*log(n))。

代码:

#include<cstdio>
#include<algorithm>
using namespace std;
#define N 305
#define ll long long
#define inf 0x7fffffff
int n,m;
struct jz
{
ll s[N][N];
bool check()
{
for(int i=;i<=n;i++)
if(s[i][i])return ;
return ;
}
jz operator * (jz a)
{
jz b;
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
b.s[i][j]=-inf;
for(int k=;k<=n;k++)
{
b.s[i][j]=max(b.s[i][j],s[i][k]+a.s[k][j]);
}
}
}
return b;
}
}p[],p0,p1; int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(i!=j)
p[].s[i][j]=-inf;
for(int a,b,c,d,i=;i<=m;i++)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
p[].s[a][b]=c;
p[].s[b][a]=d;
}
for(int i=;i<=;i++)
p[i]=p[i-]*p[i-];
if(!p[].check())
{
printf("0\n");
return ;
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(i!=j)
p0.s[i][j]=-inf;
int ans = ;
for(int i=;i>=;i--)
{
p1=p0*p[i];
if(!p1.check())
{
p0=p1;
ans|=(<<i);
}
}
printf("%d\n",ans+);
return ;
}

CF147B Smile House的更多相关文章

  1. NOIP前的水题记录

    CF147B Smile House 二分+矩阵快速幂,注意一下储存矩阵相乘结果的矩阵,初始化时,a[i][i]=-inf(而其他都可以a[i][i]=0,为了保证答案的可二分性). CF715B C ...

  2. Smile with face. Smile with mind.

    Smile with face. Smile with mind.微笑不仅是挂在脸上的,更是发自心底的.

  3. Codeforces 147B Smile House(DP预处理 + 倍增)

    题目链接  Smile House 题意  给定一个$n$个点的有向图,求一个点数最少的环,使得边权之和$>0$,这里的环可以重复经过点和边.   满足  $n <= 300$ 首先答案肯 ...

  4. hdu-6638 Snowy Smile

    题目链接 Snowy Smile Problem Description There are n pirate chests buried in Byteland, labeled by 1,2,-, ...

  5. HDU 6638 - Snowy Smile 线段树区间合并+暴力枚举

    HDU 6638 - Snowy Smile 题意 给你\(n\)个点的坐标\((x,\ y)\)和对应的权值\(w\),让你找到一个矩形,使这个矩阵里面点的权值总和最大. 思路 先离散化纵坐标\(y ...

  6. 2019杭电多校第六场hdu6638 Snowy Smile(线段树+枚举)

    Snowy Smile 题目传送门 解题思路 先把y离散化,然后把点按照x的大小进行排序,我们枚举每一种x作为上边界,然后再枚举其对应的每一种下边界.按照这种顺序插入点,这是一个压维的操作,即在线段树 ...

  7. If you see someone without smile

    If you see someone without smile, give them one of yours. 难怪我每次和不认识的人说话都放肆大笑.

  8. smile——Java机器学习引擎

    资源 https://haifengl.github.io/ https://github.com/haifengl/smile 介绍 Smile(统计机器智能和学习引擎)是一个基于Java和Scal ...

  9. Codeforces 147 B. Smile House

    题目链接:http://codeforces.com/contest/147/problem/B 求有向图的最小正权环的大小   ${n<=300}$ 非常显然的有${n^{3}log^2}$的 ...

随机推荐

  1. poj 1815 Friendship【最小割】

    网络流的题总是出各种奇怪的错啊--没写过邻接表版的dinic,然后bfs扫到t点不直接return 1就会TTTTTLE-- 题目中的操作是"去掉人",很容易想到拆点,套路一般是( ...

  2. [Swift通天遁地]一、超级工具-(2)制作美观大方的环形进度条

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. 【笔记】对自定义异常的理解(Java)

    原本,原有的异常是非手动地.自动地抛出的. 了解自定义异常时,发现其信息只是: 继承了谁,即它自己算哪种异常: 它的信息,比如一个ID,这个貌似还是可选的: 它是可被传入信息的 没有遗漏的话,就这仨了 ...

  4. UTF-8格式的文本文件程序读取异常

    最近在windows服务器上直接创建并手打输入配置参数,比如设置概率0.6,然后用java程序打开读取该参数,在本地linux环境下测试完全正常,但是一放到服务器上,就报NotNumber错误,查看了 ...

  5. IDEA3.5最新版激活码

    https://blog.csdn.net/zty1317313805/article/details/81503550 https://www.cnblogs.com/iathanasy/p/946 ...

  6. windows 下使用命令行操作ftp

    open 192.168.10.6     (连接到FTP主机) User allan\ftp            (用户连接验证,注意这里的用户用到的是FTP服务器端创建的用户名) 123     ...

  7. 解题报告:hdu 2073 无限的路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2073 Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接 ...

  8. 链表中用标兵结点简化代码 分类: c/c++ 2014-09-29 23:10 475人阅读 评论(0) 收藏

    标兵结点(头结点)是在链表中的第一个结点,不存放数据,仅仅是个标记 利用标兵结点可以简化代码.下面实现双向链表中的按值删除元素的函数,分别实现 带标兵结点和不带标兵结点两版本,对比可见标兵结点的好处. ...

  9. F 点与多边形 数学 + 观察

    https://biancheng.love/contest-ng/index.html#/123/problems 做题要在纸上弄弄,才会有发现. 发现到答案只是-1和4,因为坐标都是整数. 然后就 ...

  10. Android开发学习--RecycleView入门

    该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView.GridView 通过设置它提供的不同LayoutManager,ItemDecoration , It ...