hdu 3666 THE MATRIX PROBLEM (差分约束)
来源:互联网 发布:三星专用下载软件 编辑:程序博客网 时间:2024/06/03 17:49
题目描述
传送门
题目大意:给定一个最大400*400的矩阵,对于位置c[i,j]需要乘a[i]除b[j],问是否存在合法的a,b序列使得矩阵内的每个数都在[L,R]的区间内
题解
对于乘法运算其实我们可以取对数之后变成加减运算。
那么这道题只要用spfa 求最短路判断是否存在负环即可。
这道题的时限有点卡,所以不能保证入队n+m次,因为数据比较弱,所以入队
代码
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#define N 400003#define inf 1000000000using namespace std;int point[N],nxt[N],v[N],can[N],cnt[N],tot,n,m;double dis[N],c[N],L,U;void add(int x,int y,double t){ tot++; nxt[tot]=point[x]; point[x]=tot; v[tot]=y; c[tot]=t;}int spfa(){ for (int i=1;i<=n+m;i++) dis[i]=inf,can[i]=0,cnt[i]=0; queue<int> p; p.push(1); can[1]=cnt[1]=1; dis[1]=0; int mn=sqrt((n+m)*1.0); while (!p.empty()) { int now=p.front(); p.pop(); for (int i=point[now];i;i=nxt[i]) if (dis[v[i]]>dis[now]+c[i]) { dis[v[i]]=dis[now]+c[i]; if (!can[v[i]]) { can[v[i]]=1; cnt[v[i]]++; if (cnt[v[i]]>mn) return -1; p.push(v[i]); } } can[now]=0; } return 1;}int main(){ freopen("a.in","r",stdin); while (scanf("%d%d%lf%lf",&n,&m,&L,&U)!=EOF) { tot=0; L=log(L),U=log(U); memset(point,0,sizeof(point)); for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) { double x; scanf("%lf",&x); x=log(x); add(j+n,i,x-L); add(i,j+n,U-x); } if (spfa()==-1) printf("NO\n"); else printf("YES\n"); }}
0 0
- hdu 3666 THE MATRIX PROBLEM(差分约束系统)
- hdu 3666 THE MATRIX PROBLEM(差分约束,思路)
- HDU 3666 THE MATRIX PROBLEM(差分约束)
- Hdu 3666 THE MATRIX PROBLEM(差分约束)
- hdu 3666 THE MATRIX PROBLEM (差分约束系统)
- hdu 3666 THE MATRIX PROBLEM (差分约束)
- HDU 3666 THE MATRIX PROBLEM 差分约束系统
- hdu 3666 THE MATRIX PROBLEM 差分约束
- hdu 3666 THE MATRIX PROBLEM【差分约束系统】
- HDU 3666 THE MATRIX PROBLEM (差分约束判负环)
- hdu 3666 THE MATRIX PROBLEM 差分约束系统
- HDU 3666 THE MATRIX PROBLEM 差分约束
- HDU 3666 THE MATRIX PROBLEM (差分约束判负环)
- HDU 3666 THE MATRIX PROBLEM 差分约束
- |hdu 3666|差分约束|THE MATRIX PROBLEM
- THE MATRIX PROBLEM(差分约束)
- HDU 3666 THE MATRIX PROBLEM(差分约束 + spfa 深搜判环)
- HDU 3666 THE MATRIX PROBLEM 解题报告(差分约束)
- VMwave Workstation12虚拟机安装OS X 10.11所遇到的各种问题集合(详细版)
- 冷知识 —— 别名与别称
- 归并排序思想应用之----求数组中的逆序对
- 泛洪填充算法(Flood Fill Algorithm)
- 大型分布式网站术语分析
- hdu 3666 THE MATRIX PROBLEM (差分约束)
- 哈希表
- java基础知识7this关键字
- 通过河内之塔问题深入理解递归思想
- Gym 101246E Kidnapping 递推or dfs 优化
- 线程池为什么能维持线程不释放,随时运行各种任务?
- Adreno SDK 详细介绍(一)
- 设计模式---适配器模式
- java