#差分约束系统,Spfa,SLF优化#HDU 3666 THE MATRIX PROBLEM
题目
多组询问,给定一个\(n*m\)的矩阵\(C\)和一个区间\([L,R]\),
问是否存在一个长度为\(n\)的序列\(A\)和一个长度为\(m\)的序列\(B\),
使得所有
\]
不需要输出具体方案
分析
这其实是一个不等式,变量是\(A_i\)和\(B_j\),这样可以化简成
\]
这样不够好做,考虑把它化成对数的形式,即是
\]
按照这个建图判断有没有负环即可,有负环就是无解
但是bfs版的spfa会TLE,考虑SLF优化,只跑了700ms(但是这样更容易被卡掉)
代码
#include <cstdio>
#include <cctype>
#include <cmath>
#include <deque>
#define rr register
using namespace std;
const int N=811; deque<int>q;
int v[N],cnt[N],as[N],S,n,m,et; double dis[N],l,r;
struct node{int y; double w; int next;}e[N*N>>1];
inline signed iut(){
rr int ans=0,f=1; rr char c=getchar();
while (!isdigit(c)) f=(c=='-')?-f:f,c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans*f;
}
inline void add(int x,int y,double w){
e[++et]=(node){y,w,as[x]},as[x]=et;
}
inline bool spfa(){
while (!q.empty()) q.pop_front();
for (rr int i=1;i<=S;++i)
dis[i]=1e18,v[i]=cnt[i]=0;
q.push_back(S); dis[S]=0,v[S]=1;
while (!q.empty()){
rr int x=q.front(); q.pop_front();
for (rr int i=as[x];i;i=e[i].next)
if (dis[e[i].y]>dis[x]+e[i].w){
dis[e[i].y]=dis[x]+e[i].w;
if (++cnt[e[i].y]>=S) return 0;
if (!v[e[i].y]){
v[e[i].y]=1;
if (!q.empty()&&dis[e[i].y]<dis[q.front()]) q.push_front(e[i].y);
else q.push_back(e[i].y);
}
}
v[x]=0;
}
return 1;
}
signed main(){
while (scanf("%d",&n)==1){
m=iut(),S=n+m+1,et=0,
l=log(iut()),r=log(iut());
for (rr int i=1;i<=S;++i) as[i]=0;
for (rr int i=1;i<S;++i) add(S,i,0);
for (rr int i=1;i<=n;++i)
for (rr int j=1;j<=m;++j){
rr double x=log(iut());
add(i,j+n,r-x),add(j+n,i,x-l);
}
puts(spfa()?"YES":"NO");
}
return 0;
}
#差分约束系统,Spfa,SLF优化#HDU 3666 THE MATRIX PROBLEM的更多相关文章
- HDU 3666.THE MATRIX PROBLEM 差分约束系统
THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- HDU 3666 THE MATRIX PROBLEM (差分约束,最短路)
题意: 给一个n*m矩阵,每个格子上有一个数字a[i][j],给定L和U,问:是否有这样两个序列{a1...an}和{b1...bn},满足 L<=a[i][j]*ai/bj<=U .若存 ...
- HDU 3666 THE MATRIX PROBLEM (差分约束 深搜 & 广搜)
THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- hdu 3666 THE MATRIX PROBLEM
差分约束系统. 根据题意,可以写出不等式 L <= (Xij * Ai) / Bj <= U 即 Ai/Bj<=U/Xij和Ai/Bj>=L/Xij 由于差分约束系统是减法.. ...
- HDU 3666 THE MATRIX PROBLEM (差分约束)
题意:给定一个最大400*400的矩阵,每次操作可以将某一行或某一列乘上一个数,问能否通过这样的操作使得矩阵内的每个数都在[L,R]的区间内. 析:再把题意说明白一点就是是否存在ai,bj,使得l&l ...
- [BZOJ 2200][Usaco2011 Jan]道路和航线 spfa+SLF优化
Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条 ...
- spfa + slf优化
最近在练习费用流 , 不是要用spfa吗 ,我们教练说:ns学生写朴素的spfa说出去都让人笑 . QwQ,所以就去学了一下优化 . slf优化就是双向队列优化一下,本来想用lll优化,可是优化后我t ...
- 差分约束系统 + spfa(A - Layout POJ - 3169)
题目链接:https://cn.vjudge.net/contest/276233#problem/A 差分约束系统,假设当前有三个不等式 x- y <=t1 y-z<=t2 x-z< ...
- 【差分约束系统/SPFA】POJ3169-Layout
[题目大意] n头牛从小到大排,它们之间某些距离不能大于一个值,某些距离不能小于一个值,求第一头牛和第N头牛之间距离的最大值. [思路] 由题意可以得到以下不等式d[AL]+DL≥d[BL]:d[BD ...
- 初识费用流 模板(spfa+slf优化) 餐巾计划问题
今天学习了最小费用最大流,是网络流算法之一.可以对于一个每条边有一个容量和一个费用(即每单位流的消耗)的图指定一个源点和汇点,求在从源点到汇点的流量最大的前提下的最小费用. 这里讲一种最基础也是最好掌 ...
随机推荐
- 类型注解Callable
from collections.abc import Callable """ Callable[[ParamType1, ParamType2], ReturnTyp ...
- 【Java复健指南08】OOP中级03【完结】-Object类和一些练习
前情回顾:https://www.cnblogs.com/DAYceng/category/2227185.html Object类 equals方法 "=="与equals的区别 ...
- 【Azure Developer】在微软云中国区,如何使用Microsoft GraphAPI连接到B2C Tenant
问题描述 如题所述,当在中国区使用Microsoft GraphAPI连接B2C Tenant时候,如何来设置中国区的Endpoint呢?在GitHub的示例中,并没有示例介绍如何连接中国区.如 问题 ...
- SpringCloudStream消息驱动
1. 基本介绍 官方文档: https://spring.io/projects/spring-cloud-stream#learn 背景: 在一般的大型项目中,或者分布式微服务结构的系统里,一般都会 ...
- vscode 两种定位跳转的方法 ctrl+p 方法1 path:行号 方法2 #变量名 - 针对$store变量不好找的方案 方法1可以备注在代码里面
vscode 两种定位跳转的方法 ctrl+p 方法1 path:行号 方法2 #变量名 - 针对$store变量不好找的方案 方法1可以备注在代码里面 问题 $store的变量不能跳转,有跳转插件也 ...
- vue 可选链 功能 ?. 替代 res && res.status 可以变成 res?.status
安装 cnpm install --save-dev @babel/plugin-proposal-optional-chaining .babelrc { "presets": ...
- Sub-process /usr/bin/dpkg returned an error code (1)问题
在用apt-get安装软件包的时候遇到E: Sub-process /usr/bin/dpkg returned an error code (1)问题,解决方法如下: cd /var/lib/dpk ...
- 基于六轴传感器MPU6050的物体移动监测报警系统
一 系统简介 1.简介 MPU-60x0 是全球首例 9 轴运动处理传感器.它集成了 3 轴MEMS陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion ...
- ModuleNotFoundError: No module named xxx 的原因和解决办法(附带新大陆)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 常用命令rsyncscp-1
常用命令:rsync/scp scp scp命令文件传输 scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能 ...