loop|loop.in|loop.out

题目描述:

给出一个有向带权图,权为边权,求一个简单回路,使其平均边权最小。

简单回路指不多次经过同一个点的回路。

输入格式:

第一行两个整数,表示图的点数n和图的边数m。

接下来m行,每行三个整数a,b,c表示一条从a指向b权为c的有向边。

输出格式:

一行一个实数,表示最小平均边权,保留两位小数。

样例输入:

4
5

1
2 3

2
3 5

3
1 4

3
4 3

4
1 2

样例输出:

3.25

数据范围:

30%
n<=10 ,m<=20

100%
n<=600,m<=1000,0<=c<=32768

保证原图强连通,无自环

hja的优化方法:类似题目可以将浮点数乘10000转换为整数,但是有爆int的风险。

求负环用bellman-ford O(NV)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAXN 660
#define MAXE 5000
#define PROB "loop"
#define eps 1e-4
#define INF 0x3f3f3f3f3f3f3f3fLL
#define inf 1E1000
#ifdef unix
#define LL "%lld"
#else
#define LL "%I64d"
#endif
typedef long long qword;
struct edge
{
int x,y;
qword z;
}el[MAXE];
qword dis[MAXN];
int main()
{
freopen(PROB".in","r",stdin);
//freopen(PROB".out","w",stdout);
int n,m;
scanf("%d%d",&n,&m);
int i,j,k,x,y;
qword z;
qword l,r,mid;
l=r=;
for (i=;i<m;i++)
{
scanf("%d%d"LL,&x,&y,&z);
x--;y--;
z*=;
el[i].x=x;
el[i].y=y;
el[i].z=z;
if(z<)l+=z;
else r+=z;
}
bool flag;
while (l+<r)
{
mid=(l+r)/;
for (i=;i<=n;i++)dis[i]=INF;
dis[]=;
flag=false;
for (i=;i<m;i++)
{
el[i].z-=mid;
}
for (i=;i<n;i++)
{
for(j=;j<m;j++)
{
if (dis[el[j].x]+el[j].z<dis[el[j].y])
dis[el[j].y]=dis[el[j].x]+el[j].z;
}
}
for (i=;i<n;i++)
{
for(j=;j<m;j++)
{
if (dis[el[j].x]+el[j].z<dis[el[j].y])
flag=true;
if (flag)break;
}
if (flag)break;
}
for(i=;i<m;i++)el[i].z+=mid;
if (flag)
{
r=mid;
}else
{
l=mid;
}
}
printf("%.2lf\n",(double)r/10000.0);
}

Contest20140710 loop bellman-ford求负环&&0/1分数规划的更多相关文章

  1. uva 558 - Wormholes(Bellman Ford判断负环)

    题目链接:558 - Wormholes 题目大意:给出n和m,表示有n个点,然后给出m条边,然后判断给出的有向图中是否存在负环. 解题思路:利用Bellman Ford算法,若进行第n次松弛时,还能 ...

  2. bzoj 1486: [HNOI2009]最小圈 dfs求负环

    1486: [HNOI2009]最小圈 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1022  Solved: 487[Submit][Status] ...

  3. [USACO07DEC]Sightseeing Cows(负环,0/1分数规划)

    [USACO07DEC]Sightseeing Cows Description Farmer John has decided to reward his cows for their hard w ...

  4. POJ 3259 Wormholes(最短路径,求负环)

    POJ 3259 Wormholes(最短路径,求负环) Description While exploring his many farms, Farmer John has discovered ...

  5. bzoj3232圈地游戏——0/1分数规划+差分建模+判环

    Description DZY家的后院有一块地,由N行M列的方格组成,格子内种的菜有一定的价值,并且每一条单位长度的格线有一定的费用. DZY喜欢在地里散步.他总是从任意一个格点出发,沿着格线行走直到 ...

  6. Bzoj1486/洛谷P3199 最小圈(0/1分数规划+spfa)/(动态规划+结论)

    题面 Bzoj 洛谷 题解(0/1分数规划+spfa) 考虑\(0/1\)分数规划,设当前枚举到的答案为\(ans\) 则我们要使(其中\(\forall b_i=1\)) \[ \frac{\sum ...

  7. poj2728 Desert King【最优比率生成树】【Prim】【0/1分数规划】

    含[最小生成树Prim]模板. Prim复杂度为$O(n^2),适用于稠密图,特别是完全图的最小生成树的求解.   Desert King Time Limit: 3000MS   Memory Li ...

  8. LOJ 3089 「BJOI2019」奥术神杖——AC自动机DP+0/1分数规划

    题目:https://loj.ac/problem/3089 没想到把根号之类的求对数变成算数平均值.写了个只能得15分的暴力. #include<cstdio> #include< ...

  9. POJ - 2976 Dropping tests && 0/1 分数规划

    POJ - 2976 Dropping tests 你有 \(n\) 次考试成绩, 定义考试平均成绩为 \[\frac{\sum_{i = 1}^{n} a_{i}}{\sum_{i = 1}^{n} ...

随机推荐

  1. Linux下top订购具体解释

    Linux下top订购具体解释 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvempmMjgwNDQxNTg5/font/5a6L5L2T/fontsize ...

  2. 偷偷mark下一个

    java书单 thinking in java java战 Effective Java 深入了解JVM虚拟机 java性能优化权威指南 JSR133 Google Guava官方教程 版权声明:本文 ...

  3. oracle9

    约束 维护数据的完整性 数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则(比如年纪不能为-,性别不能为非男女),在oracle中,数据完整性可以使用约束.触发器.应用程序(过程.函数)三种方法来 ...

  4. locale------- linux字符集

    查看当前系统字符集 [root@server1 ~]# locale LANG=zh_CN.UTF-8LC_CTYPE="zh_CN.UTF-8"LC_NUMERIC=" ...

  5. Linux bash常用测试判断选项

    bash编程中if [   ]后面的测试选项: 1.整数测试: -le less equal -lt less than -ge greater equal -gt greater than -eq ...

  6. 【jQuery】用jQuery给文本框添加只读属性【readOnly】

    <input id="id" type="text" /> jQuery( $("#ID").attr({ readonly: ...

  7. [上传下载] C#FileUp文件上传类 (转载)

    点击下载 FileUp.zip 主要功能如下 .把上传的文件转换为字节数组 .流转化为字节数组 .上传文件根据FileUpload控件上传 .把Byte流上传到指定目录并保存为文件 看下面代码吧 // ...

  8. Android开发手记(17) 数据存储二 文件存储数据

    Android为数据存储提供了五种方式: 1.SharedPreferences 2.文件存储 3.SQLite数据库 4.ContentProvider 5.网络存储 本文主要介绍如何使用文件来存储 ...

  9. Javascript实现图片库效果

    思路: 无序列表加载图片文件.用img标签加载一张图片作为占位符.当点击照片链接时,改变<a>元素的href属性.并且阻止浏览器的默认行为. 动态改变描述文字,在图片下方增加P标签.通过获 ...

  10. mysql 链接数据库

    一.MySQL 连接本地数据库,用户名为“root”,密码“root”(注意:“-p”和“root” 之间不能有空格) C:\>mysql -h localhost -u root -proot ...