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

题解:建立矩阵,处理其二进制上每一位的状态。时间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. 利用Redis Sentinel实现redis主从自动切换

    redis主从配置很简单,只需要在slave的配置里加slaveof 192.168.0.100 6379(master的ip和端口) 如果master有密码再设置 masterauth passwo ...

  2. Swift4 函数, 元组, 运算符

    创建: 2018/02/19 完成: 2018/02/19 更新: 2018/02/25 修改标题 [Swift4 函数] -> [Swift4 函数, 元组, 运算符] 更新 :2018/03 ...

  3. spoj 1693 COCONUTS - Coconuts【最小割】

    s向所有信仰1的人连(s,i,1),所有信仰0的人连(i,t,1),对于朋友关系,连接双向边,流量为1.跑最大流的结果即为答案. 考虑这样做的意义.最小割就是把总点集分割为两个点集S,T,使得所有\( ...

  4. html语义化与前端页面排版规则

    1.使用div进行布局,不要用div进行无意义的包裹  span行内常见元素 2.可以使用div和p的情况下,尽量用p.p有默认上下间隔字体加粗等,可以对终端有适配 3.需要强调的文本,可以包含在st ...

  5. Pycharm的安装教学

    Python环境搭建—安利Python小白的Python和Pycharm安装详细教程 人生苦短,我用Python.众所周知,Python目前越来越火,学习Python的小伙伴也越来越多.最近看到群里的 ...

  6. 关于新手html的认识 以及对table的基本用法

    1.html语言 <!DOCTYPE html> 声明html <!--双标签--> <!--<html 属性名="属性值 " 属性名2=&qu ...

  7. python爬虫爬取汽车页面信息,并附带分析(静态爬虫)

    环境: windows,python3.4 参考链接: https://blog.csdn.net/weixin_36604953/article/details/78156605 代码:(亲测可以运 ...

  8. Word排版技巧

    点击打开链接 # 整体布局 ## 页面布局 如果是新建一个Word文件,这里「页面布局」一般不用设置了: 文字方向:从左到右: 页边距:普通(日常使用建议用适中或窄,节约用纸,提交的论文报告什么才用普 ...

  9. 题解报告:Luogu P3368 【模板】树状数组 2(区间修改,单点查询)

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  10. AFNetworking2.5使用-转

    来自:http://blog.csdn.net/daiyelang/article/details/38434023 官网下载2.5版本:http://afnetworking.com/ 此文章是基于 ...