Time Limit: 1 Sec  Memory Limit: 256 MB
Submit: 390  Solved: 217
[
Submit][Status][Discuss]

Description

有一个n*m的矩阵,初始每个格子的权值都为0,可以对矩阵执行两种操作:

1. 选择一行, 该行每个格子的权值加1或减1。

2. 选择一列, 该列每个格子的权值加1或减1。

现在有K个限制,每个限制为一个三元组(x,y,c),代表格子(x,y)权值等于c。问是否存在一个操作序列,使得操作完后的矩阵满足所有的限制。如果存在输出”Yes”,否则输出”No”。

Input

先输入一个T(T <= 5)代表输入有T组数据,每组数据格式为:

第一行三个整数n, m, k (1 <= n, m,k <= 1000)。

接下来k行,每行三个整数x, y, c。

Output

对于每组数据,输出Yes或者No。

Sample Input

2
2 2 4
1 1 0
1 2 0
2 1 2
2 2 2
2 2 4
1 1 0
1 2 0
2 1 2
2 2 1

Sample Output

Yes
No

HINT

Source

【题解】

    ①行列差分约束。

    ②每个行每个列看做一个点。

    ③建立超级源点保证图连通,进行一次SPFA即可解决。

#include<queue>
#include<stdio.h>
#define inf 1000000007
#define go(i,a,b) for(int i=a;i<=b;i++)
#define fo(i,a,x) for(int i=a[x],v=e[i].v;i;i=e[i].next,v=e[i].v)
const int N=2010;
struct E{int v,next,w;}e[N<<2];
int T,n,m,K,head[N],k,x,y,v,S,d[N],vis[N];bool inq[N],bad;
void ADD(int u,int v,int w){e[k]=(E){v,head[u],w};head[u]=k++;} bool SPFA()
{
std::queue<int>q;d[S]=0;
while(!q.empty())q.pop();q.push(S);int u;
while(!q.empty())
{
inq[u=q.front()]=0;q.pop();
fo(i,head,u)if(d[u]+e[i].w<d[v])
{
d[v]=d[u]+e[i].w;
if((++vis[v])>(n+m))return 0;
if(!inq[v])inq[v]=1,q.push(v);
}
}
return 1;
} int main()
{
scanf("%d",&T);
while(T--&&scanf("%d%d%d",&n,&m,&K))
{
go(i,0,n+m)d[i]=inf,head[i]=inq[i]=vis[i]=0;bad=0;k=1;
go(i,1,K)scanf("%d%d%d",&x,&y,&v),ADD(x,y+n,v),ADD(y+n,x,-v);
go(i,1,n+m)ADD(S,i,0);puts(SPFA()?"Yes":"No");
}
return 0;
}//Paul_Guderian

.

【BZOJ 4500 矩阵】的更多相关文章

  1. BZOJ 4500: 矩阵

    4500: 矩阵 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 326  Solved: 182[Submit][Status][Discuss] De ...

  2. BZOJ 4500: 矩阵 差分约束

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4500 题解: 从行向列建边,代表一个格子a[i][j],对每个顶点的所有操作可以合并在一 ...

  3. BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)

    BZOJ 差分约束: 我是谁,差分约束是啥,这是哪 太真实了= = 插个广告:这里有差分约束详解. 记\(r_i\)为第\(i\)行整体加了多少的权值,\(c_i\)为第\(i\)列整体加了多少权值, ...

  4. bzoj 4500: 矩阵 差分约束系统

    题目: Description 有一个n*m的矩阵,初始每个格子的权值都为0,可以对矩阵执行两种操作: 选择一行, 该行每个格子的权值加1或减1. 选择一列, 该列每个格子的权值加1或减1. 现在有K ...

  5. bzoj 4500 矩阵 题解

    题意: 有一个 $ n * m $ 的矩阵,初始每个格子的权值都为 $ 0 $,可以对矩阵执行两种操作: 选择一行,该行每个格子的权值加1或减1. 选择一列,该列每个格子的权值加1或减1. 现在有 $ ...

  6. bzoj 4500: 矩阵【差分约束】

    (x,y,z)表示格子(x,y)的值为z,也就是x行+y列加的次数等于z,相当于差分约束的条件,用dfs判断冲突即可. #include<iostream> #include<cst ...

  7. BZOJ 4500: 矩阵 带权并查集

    这个思路挺巧妙的 ~ 定义一行/列的权值为操作后所整体增加的值. 那么,我们会有若干个 $a[x]+b[y]=c$ 的限制条件. 但是呢,我们发现符号是不能限制我们的(因为可加可减) 所以可以将限制条 ...

  8. [BZOJ 2738] 矩阵乘法 【分块】

    题目链接:BZOJ - 2738 题目分析 题目名称 “矩阵乘法” 与题目内容没有任何关系..就像VFK的 A+B Problem 一样.. 题目大意是给定一个矩阵,有许多询问,每次询问一个子矩阵中的 ...

  9. [BZOJ]1059 矩阵游戏(ZJOI2007)

    虽然说是一道水题,但小C觉得还是挺有意思的,所以在这里mark一下. Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N*N黑白 ...

随机推荐

  1. ZooKeeper异常:Error connecting service It is probably not running

    ZooKeeper安装后使用以下命令可以启动成功 bin/zkServer.sh start 但是使用下面命令查看启动状态,则报错误: bin/zkServer.sh status Error con ...

  2. Scrapy进阶

    当我们使用scrapy框架爬取网站的时候,我们会有一个入口的url,一个名为start_urls,我们爬取的第一个网页是从这一开始的. 需求: 现在我们有一个这样的需求,比如说我们对起始的URL有一个 ...

  3. ctf题目writeup(7)

    2019.2.10 过年休息归来,继续做题. bugku的web题,地址:https://ctf.bugku.com/challenges 1. http://123.206.87.240:8002/ ...

  4. 3D Food Printing【3D食物打印】

    3D Food Printing There's new frontier in 3D printing that's begining to come into focus: food. 3D打印的 ...

  5. 基于jQuery的2048小游戏设计(网页版)

    上周模仿一个2048小游戏,总结一下自己在编写代码的时候遇到的一些坑. 游戏规则:省略,我想大部分人都玩过,不写了 源码地址:https://github.com/xinhua6/2048game.g ...

  6. Moodle 3.4中添加小组、大组、群

    Moodle在高中应用时经常要用到年级.班级和小组,我们可以用群.大组.小组来代替. 小组设置:网站首页-->现有课程-->右上角的设置按钮-->更多-->用户-->小组 ...

  7. Java常考面试题

    Java常考面试题 1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 答:Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行 ...

  8. OpenCV入门:(四:混合两张图片)

    1. 原理 对两张图片使用如下公式可以得到两张图片的混合图片, 其中f0(x),f1(x)分别是图片1和图片2同一位置的像素点. 2. OpenCV中的AddWeight函数 函数和参数说明: ) s ...

  9. 「日常训练」「小专题·图论」 Cow Contest (1-3)

    题意 分析 问题是要看出来这是个floyd闭包问题.我没看出来- - 分析之后补充. 代码 // Origin: // Theme: Graph Theory (Basic) // Date: 080 ...

  10. jdk8 新特性stream().map()

    1.大写字符串列表 1.1 简单的Java示例将Strings列表转换为大写 TestJava8.java package com.mkyong.java8; import java.util.Arr ...