hdu 3666 THE MATRIX PROBLEM 差分约束系统
题目意思:
一共有n+m个变量。行有那个x1,x2...xn, 列有m个b1 b2 ..bm;
然后保证 aij位置 l<=aij*xi/bj<=r;
解题思路:
对上面这个试子取对数 那么就形成了 一个典型的差分约束系统了。
每个不等试形成一条从被减数到减数的相应权值的边。
然后构图spfa即可,注意要用邻接表,这个题目容易超时。
还有注意一点:
spfa判断存在负权环:
(1) 单个点入队列的次数大于 sqrt(N) , N代表所有点的个数
(2) 点入队列的次数总和大于 T*N ,据说T一般取2.
《算法导论》里面说构造一个原点,他到其他每个点的边的长度为0,然后再SPFA,
其实直接可以讲所有0~n+m点先直接入队列,然后设置所有长度为0,效果一样
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<queue>
using namespace std;const double MAX=0x3f3f3f3f;
int n,m;
double l,r;
struct node
{int v,nxt;double w;
}edge[800000];
int head[1000],nume;void add(int u,int v,double w)
{edge[nume].v=v;edge[nume].w=w;edge[nume].nxt=head[u];head[u]=nume++;
}
int spfa(){double dis[1000];int inque[1000],i;queue<int >q;for(i=0;i<=n+m;i++){dis[i]=0;inque[i]=0;q.push(i);}int sum=1;while(!q.empty()){int temp=q.front();q.pop();inque[temp]=0;for(i=head[temp];i!=-1;i=edge[i].nxt){int v=edge[i].v;if(dis[temp]+edge[i].w<dis[v]){dis[v]=dis[temp]+edge[i].w;if(!inque[v]){q.push(v);inque[v]=1;sum++;if(sum>2*(n+m)) return 0;}}}}return 1;}int main()
{while(scanf("%d%d%lf%lf",&n,&m,&l,&r)!=EOF){int i,j;nume=0;memset(head,-1,sizeof(head));// for(i=1;i<=n+m;i++) add(0,i,0);for(i=1;i<=n;i++)for(j=1;j<=m;j++){double temp;scanf("%lf",&temp);add(n+j,i,log10(r)-log10(temp));add(i,n+j,log10(temp)-log10(l));}if(spfa()) printf("YES\n");else printf("NO\n");}return 0;
}
hdu 3666 THE MATRIX PROBLEM 差分约束系统相关推荐
- hdu 3666 THE MATRIX PROBLEM
差分约束系统. 根据题意,可以写出不等式 L <= (Xij * Ai) / Bj <= U 即 Ai/Bj<=U/Xij和Ai/Bj>=L/Xij 由于差分约束系统是减法.. ...
- Hdu 3666(差分约束系统)
Hdu 3666 (1)思路: 将不等式化简L<=xij*(ai/bj)<=R L/xij <= ai/bj <= R/xij 将两边开log log(L) - log(xij ...
- 提高篇 第三部分 图论 第4章 差分约束系统
差分约束系统_我的ACM,我的梦!!!-CSDN博客_差分约束系统 差分约束系统详解 - hr_whisper - 博客园 最短路径算法:Bellman和差分约束系统_算法导论视频课程_其他视频-51 ...
- 图论 —— 差分约束系统
[概述] 如果一个系统由 n 个变量 m 个约束条件组成,形成 m 个形如 的不等式,其中 ,k 是常数,则称这 m 个不等式为差分约束系统(system of difference constra ...
- Codevs2404糖果——差分约束系统整理
http://codevs.cn/problem/2404/ 典型的差分约束系统,给定多个约束条件,求满足条件的答案最小,最大值等. 对于一个差分约束系统,我们可以将其转化为一个不等式组,然后据此建边 ...
- bzoj 2330 / AcWing 368 银河 差分约束系统+tarjan缩点+拓扑排序
怎么最近bzoj一直上不了,莫非是挂了? AcWing的地址:https://www.acwing.com/problem/content/370/ 题意: 银河中的恒星浩如烟海,但是我们只关注那些最 ...
- 差分约束系统学习笔记
一.预备知识 最短路基本性质 #define inf 0x3fffffff #define M 1005 //最大点数struct edge{int v, w, next; }e[10005]; // ...
- hdu6525——Subway Chasing(差分约束系统)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6252 题目大意: 第一个人比第二个人先走了x分钟,路上有n个车站,现在有m个询问,每次询问会得到第一个 ...
- 【图论专题】差分约束系统
整理的算法模板合集: ACM模板 题目列表: 题目 算法 AcWing 1169. 糖果 差分约束系统.超级源点.求最值 UVA1723 Intervals 差分约束.求最值 AcWing 1170. ...
最新文章
- applicationContext.xml 的位置问题
- type python_typepython
- HBase+Spark技术双周刊 第四期
- python爬虫在哪里学_学完了python基础想学习python爬虫从哪里学起呢?
- 每日程序C语言31-auto的使用
- 图论-欧拉图-欧拉回路-Euler-Fluery-Hierholzer-逐步插入回路法-DFS详解-并查集
- Linux_日志管理介绍(一)
- nc 结合htc hts 反弹shell(内网代理环境下)
- zabbix监控进程的CPU和内存占用量
- MutationObserver监听页面是否加载完成
- 机器视觉产业链全解析
- C语言if else语句详解
- ❤️【图文并茂】Chrome浏览器(油猴子)插件安装使用教程❤️
- jdk7对list进行排序(按照list中entity的某个属性比如age)
- 大学如何自学计算机科学与技术?
- UVA 177 Paper Folding
- 台式计算机 无线接收,台式电脑无线接收器插上连不上网怎么处理
- 铁道部购票网站可能造成另一次的密码危机
- 福斯数据服务平台产品白皮书
- 青春不负韶光,梦想再次起航——记JavaEE班毕业典礼