CF147B Smile House
题目大意:给定一个有向图,其中边有边权。求点数最少的正环的点数。
题解:建立矩阵,处理其二进制上每一位的状态。时间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的更多相关文章
- NOIP前的水题记录
CF147B Smile House 二分+矩阵快速幂,注意一下储存矩阵相乘结果的矩阵,初始化时,a[i][i]=-inf(而其他都可以a[i][i]=0,为了保证答案的可二分性). CF715B C ...
- Smile with face. Smile with mind.
Smile with face. Smile with mind.微笑不仅是挂在脸上的,更是发自心底的.
- Codeforces 147B Smile House(DP预处理 + 倍增)
题目链接 Smile House 题意 给定一个$n$个点的有向图,求一个点数最少的环,使得边权之和$>0$,这里的环可以重复经过点和边. 满足 $n <= 300$ 首先答案肯 ...
- hdu-6638 Snowy Smile
题目链接 Snowy Smile Problem Description There are n pirate chests buried in Byteland, labeled by 1,2,-, ...
- HDU 6638 - Snowy Smile 线段树区间合并+暴力枚举
HDU 6638 - Snowy Smile 题意 给你\(n\)个点的坐标\((x,\ y)\)和对应的权值\(w\),让你找到一个矩形,使这个矩阵里面点的权值总和最大. 思路 先离散化纵坐标\(y ...
- 2019杭电多校第六场hdu6638 Snowy Smile(线段树+枚举)
Snowy Smile 题目传送门 解题思路 先把y离散化,然后把点按照x的大小进行排序,我们枚举每一种x作为上边界,然后再枚举其对应的每一种下边界.按照这种顺序插入点,这是一个压维的操作,即在线段树 ...
- If you see someone without smile
If you see someone without smile, give them one of yours. 难怪我每次和不认识的人说话都放肆大笑.
- smile——Java机器学习引擎
资源 https://haifengl.github.io/ https://github.com/haifengl/smile 介绍 Smile(统计机器智能和学习引擎)是一个基于Java和Scal ...
- Codeforces 147 B. Smile House
题目链接:http://codeforces.com/contest/147/problem/B 求有向图的最小正权环的大小 ${n<=300}$ 非常显然的有${n^{3}log^2}$的 ...
随机推荐
- MD5 密码加密算法 系统等待
MD5 密码加密算法 public static String md(String md, String pass) { MessageDigest m; String passok = " ...
- bzoj 3206: [Apio2013]道路费用【最小生成树+并查集】
参考:http://hzwer.com/6888.html 把k条道路权值设为0,和其他边一起跑MST,然后把此时选中的其他边设为必选,在新图中加上必选变缩成k个点,把所有边重标号,枚举k跳边的选取情 ...
- Activiti6.0教程 Service用途剖析 (二)
这节我们学习下Activiti的7大对象,首先我们从ProcessEngine接口开始看. /* Licensed under the Apache License, Version 2.0 (the ...
- tableView 顶部多出一部分解决方法
1.self.automaticallyAdjustsScrollViewInsets = NO; 此方法解决之后 不能保证tableView 能彻底的滑动到底部 2. self.edgesForEx ...
- hdu 5335 Walk Out (搜索)
题目链接: hdu 5335 Walk Out 题目描述: 有一个n*m由0 or 1组成的矩形,探险家要从(1,1)走到(n, m),可以向上下左右四个方向走,但是探险家就是不走寻常路,他想让他所走 ...
- hdu 2121 Ice_cream’s world II (无定根最小树形图)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2121 题目大意: 有n个点,有m条单向路,问这n个点组成最小树形图的最小花费. 解题思路: 1:构造 ...
- BFS(最短路) HDOJ 4308 Saving Princess claire_
题目传送门 题意:一个(r*c<=5000)的迷宫,起点'Y‘,终点'C',陷阱‘#’,可行路‘*’(每走一个,*cost),传送门P,问Y到C的最短路 分析:一道最短路问题,加了传送门的功能, ...
- 题解报告:hdu 1032 The 3n + 1 problem(克拉兹问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1032 Problem Description Problems in Computer Science ...
- angular2+typescript在asp.net MVC Web项目上的实现
网上现在还没有关于angular2+typescript在asp.net mvc web项目上的实现的系统介绍,这里我也只是探索到了一个简单的方式,还有很多问题没能解决.但是能有个好的开头也值得记录一 ...
- ATM机(非函数版)
#include<stdio.h>#include<stdlib.h>int main(void){char zhangHao[]="123";int mi ...