差分约束系统。

根据题意,可以写出不等式 L <= (Xij * Ai) / Bj <= U

即 Ai/Bj<=U/Xij和Ai/Bj>=L/Xij

由于差分约束系统是减法。。除法变减法可以用对数来解决。

两个式子两边取对数,可以写成log(Ai)-log(Bj)<=log(U/Xij)和log(Ai)-log(Bj)>=log(L/Xij)

log(Ai)和log(Bj)看作两个节点。编号分别为i和n+j,建立有向图,判断有没有负环存在。

 if(summ[hh]>4){jieguo=0;break;} 这个常数4是看了别人的博客水过去的,还可以用sqrt(入队次数)水过去。。。。正确AC姿势目前还没找到。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std; const int maxn=;
const int INF=0x7fffffff;
int jz[maxn][maxn],tott,jieguo,mm;
struct abc
{
int startt;
int endd;
double costt;
} node[*maxn*maxn];
vector<abc>ljb[maxn+maxn];
int ff[maxn+maxn],summ[maxn+maxn];
double dist[maxn+maxn]; void spfa()
{
queue<int>Q;
while(!Q.empty()) Q.pop();
int i;
for(i=; i<=mm; i++) dist[i]=INF;
memset(ff,,sizeof(ff));
memset(summ,,sizeof(summ));
dist[]=;
ff[]=;
Q.push();
while(!Q.empty())
{
int hh=Q.front();
Q.pop();
summ[hh]++;
if(summ[hh]>)
{
jieguo=;
break;
}
ff[hh]=;
for(i=; i<ljb[hh].size(); i++)
{
abc noww;
noww=ljb[hh][i];
if(dist[hh]+noww.costt<dist[noww.endd])
{
dist[noww.endd]=dist[hh]+noww.costt;
if(ff[noww.endd]==)
{
ff[noww.endd]=;
Q.push(noww.endd);
}
}
}
}
}
int main()
{
int n,m,L,U,i,j;
while(~scanf("%d%d%d%d",&n,&m,&L,&U))
{
tott=;
jieguo=;
mm=n+m;
for(i=; i<=mm; i++) ljb[i].clear();
for(i=; i<n; i++)
for(j=; j<m; j++)
scanf("%d",&jz[i][j]);
for(i=; i<n; i++)
{
for(j=; j<m; j++)
{
node[tott].startt=j+n;
node[tott].endd=i;
node[tott].costt=log(1.0*U/jz[i][j]);
ljb[j+n].push_back(node[tott]);
tott++;
node[tott].startt=i;
node[tott].endd=j+n;
node[tott].costt=-log(1.0*L/jz[i][j]);
ljb[i].push_back(node[tott]);
tott++;
}
}
spfa();
if(jieguo==) printf("YES\n");
else printf("NO\n");
}
return ;
}

hdu 3666 THE MATRIX PROBLEM的更多相关文章

  1. HDU 3666.THE MATRIX PROBLEM 差分约束系统

    THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  2. HDU 3666 THE MATRIX PROBLEM (差分约束 深搜 & 广搜)

    THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  3. HDU 3666 THE MATRIX PROBLEM (差分约束,最短路)

    题意: 给一个n*m矩阵,每个格子上有一个数字a[i][j],给定L和U,问:是否有这样两个序列{a1...an}和{b1...bn},满足 L<=a[i][j]*ai/bj<=U .若存 ...

  4. HDU 3666 THE MATRIX PROBLEM (差分约束)

    题意:给定一个最大400*400的矩阵,每次操作可以将某一行或某一列乘上一个数,问能否通过这样的操作使得矩阵内的每个数都在[L,R]的区间内. 析:再把题意说明白一点就是是否存在ai,bj,使得l&l ...

  5. HDU 4291 A Short problem(2012 ACM/ICPC Asia Regional Chengdu Online)

    HDU 4291 A Short problem(2012 ACM/ICPC Asia Regional Chengdu Online) 题目链接http://acm.hdu.edu.cn/showp ...

  6. HDU 5832 A water problem(某水题)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  7. hdu 1402 A * B Problem Plus FFT

    /* hdu 1402 A * B Problem Plus FFT 这是我的第二道FFT的题 第一题是完全照着别人的代码敲出来的,也不明白是什么意思 这个代码是在前一题的基础上改的 做完这个题,我才 ...

  8. hdu 4965 Fast Matrix Calculation(矩阵高速幂)

    题目链接.hdu 4965 Fast Matrix Calculation 题目大意:给定两个矩阵A,B,分别为N*K和K*N. 矩阵C = A*B 矩阵M=CN∗N 将矩阵M中的全部元素取模6,得到 ...

  9. hdu 2993 MAX Average Problem(斜率DP入门题)

    题目链接:hdu 2993 MAX Average Problem 题意: 给一个长度为 n 的序列,找出长度 >= k 的平均值最大的连续子序列. 题解: 这题是论文的原题,请参照2004集训 ...

随机推荐

  1. 获取Exception的详细信息

    转自:http://blog.csdn.net/long95wang/article/details/8089489 方法一: public static String getExceptionAll ...

  2. PHP里文件的查找方式及写法

    PHP里说的文件包括:文件和目录1.用filetype方法加路径("./11.txt")是判断文件类型 //var_dump(filetype("./11.txt&quo ...

  3. oc之对象作为类的属性

    对象做为类的属性 1. 一个Target中的类无法直接在另外1个Target中访问. 2. 类的属性代表什么? a. 类的属性代表这类事物具有的共同的特征 b. 类的属性代表这个类所拥有的东西. 灯: ...

  4. LeetCode题解 15题 第二篇

    之前写过一篇,这是第二篇.上一篇用了多种编程语言来做,这一次是以学算法为主,所以打算都用python来完成. 4. Median of Two Sorted Arrays There are two ...

  5. 基于Azure blob storage T级别HBase表恢复

    为减少Hbase集群压力,提高性能,我们将HBase库中的数据移到另外的存储,下面记录当我需要对数据进行计算时,数据恢复的过程 目录: Azure storage explorer 工具 数据复制 元 ...

  6. Unity3D 浏览工具

    键盘控制: 1.键盘箭头:先选中场景激活场景 按箭头前后左右  shift +箭头 加速移动 2.使物体成为场景焦点:左侧层次视图列表选中物体,移动鼠标指针到场景视图上 按F,选中物体成为场景视图中心 ...

  7. IMG图片垂直居中的问题

    之前老是碰到图片文字位置调整的问题,图片不按自己的要求变化,后来发现其实很简单. <P><img src="" style="vertical-alig ...

  8. Oracle 视图操作

    -- 创建视图create view V_TEST asselect * from T_TEST where rownum <100 select * from V_TEST-- 新建视图用户 ...

  9. Fatal error: Call to undefined function oci_connect()

    http://stackoverflow.com/questions/22478387/call-to-undefined-function-oci-connect Whenever you conn ...

  10. GTK+2.0学习——C指针回顾

    工作需要,开始做GTK,但是很久没碰C了,来捡一下C的精华. 一.*和&的意义 *:指针运算符 &:取地址运算符 两者优先级一样,从右向左方向结合 二.指针和指针变量 指针:一个变量的 ...