题目描述

据古代传说记载,所罗门王既是智慧的代表,又是财富的象征。他建立了强大而富有的国家,聚集了大批的黄金象牙和钻石,并把这些价值连城的珍宝藏在一个神秘的地方,这就是世人瞩目的“所罗门王的宝藏”。多少个世纪以来,人们一直在寻找这批早已失落的古代文明宝藏,寻找盛产黄金和钻石的宝地。曾经追寻所罗门王宝藏的冒险者们都一去不回,至今没人解开这个谜题。亨利男爵在一次幸运的旅途中意外地得到了三百年前一位葡萄牙贵族留下的写在羊皮卷上的所罗门王的藏宝图和一本寻宝秘籍。在这张藏宝图的诱惑下,亨利男爵邀请约翰上校和勇敢的猎象人夸特曼开始了寻找埋葬在黑暗地底的所罗门王宝藏的艰险历程。他们横穿渺无边际的沙漠和浓荫蔽日的原始森林,越过汹涌澎湃的激流险滩,翻越高耸入云的峻岭雪山,饱尝沙漠的酷热和冰雪严寒,在藏宝图的指引下来到非洲一个原始的神秘国度库库安纳。这里有残酷的人殉制度,有一个拥有一千个妻室的独眼暴君特瓦拉,有像兀鹫一般丑恶诡诈老而不死的女巫加古尔,还有美丽聪慧的绝代佳人弗拉塔。在这片陌生而又险象环生的土地上三位寻宝英雄历尽艰辛,终于在绝代佳人弗拉塔的帮助下在海底深处找到了珍藏这批价值连城宝藏的巨大的藏宝洞。然而在女巫加古尔的精心策划下,一场灭顶之灾正在悄悄逼近。

藏宝洞的洞门十分坚固且洞门紧闭,如果不知道开启洞门的秘密是无法打开藏宝洞的洞门。在藏宝洞的洞门一侧有一个奇怪的矩形密码阵列。根据寻宝秘籍的记载,在密码阵列每行的左侧和每列的顶端都有一颗红宝石按钮。每个按钮都可以向左或向右转动。每向左转动一次按钮,相应的行或列中数字都增 1。每向右转动一次按钮,相应的行或列中数字都减 1。在矩形密码阵列的若干特定位置镶嵌着绿宝石。只有当所有绿宝石位置的数字与藏宝图记载的密码完全相同,紧闭的洞门就会自动缓缓打开。女巫加古尔早已得知开门的秘密。为了阻止寻宝者打开洞门,女巫加古尔为开门的密码阵列设置了全0的初始状态。试图打开洞门的寻宝者如果不能迅速转动按钮使所有绿宝石位置的数字与藏宝图记载的密码完全相同,就会自动启动藏宝洞玄妙的暗器机关,使寻宝者遭到灭顶攻击而死于非命。

您能帮助三位寻宝英雄顺利打开藏宝洞的洞门吗?

编程任务:对于给定的密码阵列,找到获得正确密码的红宝石按钮的转动序列。

输入

输入的第一行中有一个正整数T(T≤5)表示有T组数据。每组数据的第一行有3个正整数n,m和k,表示洞门密码阵列共有n行和m列,0<n,m,k≤1000。各行从上到下依次编号为1,2,…,n;各列从左到右依次编号为1,2,…,m。接下来的k行中每行有三个整数x,y,c,分别表示第k个绿宝石在密码阵列中的位置和密码,x为行号y为列号,c为该位置处的密码。

输出

对于每组数据,用一行输出 Yes 或者 No。输出 Yes 表示存在获得正确密码的红宝石按钮的转动序列。输出 No 则表示无法找到获得正确密码的红宝石按钮的转动序列。

样例输入

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

样例输出

Yes
No

提示

对于100%的数据,1≤n,m,k≤1000,k≤n×m,∣c∣≤1,000,000。

[思路]

如果可以实现, 则应该满足 任意两行 每一列差值 相等,  任意两列, 每一行的差值 相等 , 才可以实现

n^2  实现 方法,  直接枚举  宝石位置

[代码]]

#include <bits/stdc++.h>
#include <stdlib.h>
#include <utility>
#define findx(x,b,n) lower_bound(b+1,b+1+n,x)-b
#define FIN      freopen("input.txt","r",stdin)
#define FOUT     freopen("output.txt","w",stdout)
#define SHUT ios_base::sync_with_stdio(false); cout.setf(ios::fixed); cout.precision(20); cout.tie(nullptr); cin.tie(nullptr);
#define lson rt << 1, l, mid
#define rson rt << 1|1, mid + 1, r#pragma comment(linker, "/STACK:1024000000,1024000000")  // 扩栈
//next_permutation(a+1,a+x) 全排列
#define rep(i,a,n) for(int i=a;i<n;i++)
#define per(i,a,n) for(int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())using namespace std;typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;const double PI=acos(-1.0);
const int INF=0x3f3f3f3f;
const double esp=1e-6;
const int maxn=1e3+15;
const int MOD=1e9+7;
const int mod=1e9+7;/*********************************head************************/int n,m,k;
int vis[maxn][maxn];
int vis2[maxn][maxn];
int row[maxn][maxn];
int col[maxn][maxn];
int x[maxn],y[maxn];int c[maxn];
int Sub(int x,int y,int t)
{return x>y? -t:t;
}
int main()
{int t;scanf("%d",&t);while(t--){scanf("%d %d %d",&n,&m,&k);memset(vis,0,sizeof(vis));memset(vis2,0,sizeof(vis2));memset(col,0,sizeof(col));memset(row,0,sizeof(row));int flag = 1;rep(i,1,k+1){scanf("%d %d %d",&x[i],&y[i],&c[i]);}rep(i,1,k+1){rep(j,i+1,k+1){if( !vis[x[i]][x[j]] && y[i]==y[j]){vis[x[i]][x[j]] = 1;row[x[i]][x[j]]  = Sub( x[i],x[j],c[i]-c[j]);}else if(y[i]==y[j] && row[x[i]][x[j]] !=  Sub( x[i],x[j],c[i]-c[j])){flag = 0;}if( !vis2[y[i]][y[j]] && x[i]==x[j]){vis2[y[i]][y[j]] = 1;col[y[i]][y[j]]  = Sub( y[i],y[j],c[i]-c[j]);}else if( x[i]==x[j] && col[y[i]][y[j]] !=  Sub( y[i],y[j],c[i]-c[j])){flag = 0;}}}//cout<<flag<<endl;rep(i,1,n+1)if(vis[i][i]&&row[i][i]!=0)flag =0;rep(i,1,m+1)if(vis2[i][i]&&col[i][i]!=0)flag =0;if(flag)puts("Yes");elseputs("No");}return 0;
}

@UPC 6605 @福建OI2018 [FJOI2018] @ 洛谷 P4578 所罗门王的宝藏 (矩阵行列规律)相关推荐

  1. 洛谷:P1129 [ZJOI2007] 矩阵游戏(二分图最大匹配)

    洛谷:矩阵游戏 洛谷题解就挺好 目的是使得最终(1,1)(2,2)-(n,n)都有一个点 可以看作为,最终状态需要每 i 行和 i 列都存在一个匹配 建图方式:对于 i 行 j 列的1点,建一条 i ...

  2. 洛谷:P1129 [ZJOI2007] 矩阵游戏

    题目链接:P1129 [ZJOI2007] 矩阵游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路: 首先不知道最大匹配数概念的可以看看这篇博客: (5条消息) 二分图及 ...

  3. 洛谷P1527 [国家集训队] 矩阵乘法 [整体二分,二维树状数组]

    题目传送门 矩阵乘法 题目描述 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. 输入输出格式 输入格式: 第一行两个数N,Q,表示矩阵大小和询问组数: 接下来N行N列一共N* ...

  4. 洛谷P5159 WD与矩阵

    题目背景 WD整日沉浸在矩阵中,无法自拔-- 题目描述 WD特别喜欢矩阵,尤其是\(01\)矩阵. 一天,CX给了WD一个巨大的\(n\)行\(m\)列的\(01\)矩阵,WD发现这个矩阵每行.每列的 ...

  5. 洛谷 P3959 [NOIP2017]宝藏 题解

    通向地底的传送门 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 \(n\) 个深埋在地下的宝藏屋, 也给出了这 \(n\) 个宝藏屋之间可供开发的$ m$ 条道路和它们的长度. 小明决 ...

  6. 【杂题总结】洛谷-3959 宝藏

    [洛谷-3959] 宝藏 感觉NOIP2107提高组的题只写第一道水题不太合适?然后再写一道--线下考试的时候脑子瓦特了,状压都写了就是没写出正解QwQ +传送门+ ◇ 题目(copy from 洛谷 ...

  7. upc 2022/2/27 校赛+洛谷6599

    The problem is to construct a sequence that satisfy the following conditions: the length of the sequ ...

  8. 洛谷 P7960 [NOIP2021] 报数

    PS:如果读过题了可以跳过题目描述直接到题解部分 提交链接:洛谷 P7960 [NOIP2021] 报数 题目 题目描述 报数游戏是一个广为流传的休闲小游戏.参加游戏的每个人要按一定顺序轮流报数,但如 ...

  9. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  10. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

最新文章

  1. ELK不香了!我用Graylog
  2. 使用批处理复制并以时间规则重命名文件
  3. 实战 SSH 端口转发
  4. 计算机语言学 考研学校,2019考研专业:语言学及应用语言学
  5. 知乎上已获千赞,全网独家首发!
  6. Solr Facet技术的应用与研究
  7. 数据采集组件:Flume基础用法和Kafka集成
  8. ubuntu18机器学习环境安装基于anaconda
  9. camera驱动电源配置_基于AD7656-1和ADuC7026评估电源时序控制影响
  10. 数据库持久化ORM框架Hibernate、JPA、Mybatis、JOOQ和JDBC Template的比较
  11. MySQL数据库基本操作-DDL
  12. 取自开源,分享于开源 —— 利用CVE-2017-8890漏洞ROOT天猫魔屏A1
  13. linux 7 恢复系统,CentOS 7在grub rescue模式中修复系统
  14. 仿微软Video Indexer——视频断点播放与智能解析时间线的前端可视化实现
  15. 【转】主板上的电压符号:vdd,vddq,5vsb,3.3sb,vcc3.3,Vdimm
  16. 程序开发团队之团队精神篇(转)
  17. Postgresql - 查询表引用或被引用的外键
  18. Vero praesentium odio suscipit dolor.Eos accusamus rem tempore.
  19. QTransform(图形平移旋转剪切变换)
  20. 语法基础课——第二讲 习题

热门文章

  1. volatile(防止编译器对代码进行优化,常用于多线程环境中)
  2. python中条件语句的使用_如果(If) | Python 中的条件控制语句详解
  3. iOS开发-代替UDID被弃用和UUID使用缺陷的解决方案
  4. 星星之火OIer:NOIP2018完爆总结
  5. 上海 政府性 常用网站
  6. 怀旧小虎队 谨防挂马网站和极虎病毒
  7. 身份证实名认证API接口
  8. 路径详解(绝对路径,相对路径,根相对路径)
  9. 尝试说透网关和路由器的异同
  10. qq留言板html代码,qq主人寄语代码_QQ留言板主人寄语