6605: 所罗门王的宝藏

时间限制: 1 Sec  内存限制: 128 MB
提交: 198  解决: 71
[提交] [状态] [讨论版] [命题人:admin]

题目描述

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

藏宝洞的洞门十分坚固且洞门紧闭,如果不知道开启洞门的秘密是无法打开藏宝洞的洞门。在藏宝洞的洞门一侧有一个奇怪的矩形密码阵列。根据寻宝秘籍的记载,在密码阵列每行的左侧和每列的顶端都有一颗红宝石按钮。每个按钮都可以向左或向右转动。每向左转动一次按钮,相应的行或列中数字都增 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。

因为只能同行同列的变化,所以每两行所对应的每列差值应该相同,每两列所对应的每行差值相同,所以O(n^2)遍历,枚举每个点

代码:

#include <bits/stdc++.h>
typedef long long ll;
const int INF=1e9;
const int maxx=1e3+50;
using namespace std;
int n,m,k,t;
int t1[maxx][maxx],t2[maxx][maxx];
int vis1[maxx][maxx],vis2[maxx][maxx];
int x[maxx],y[maxx],c[maxx];int cha(int i,int j,int tp){if (tp == 0){if (y[i] > y[j])swap(i,j);return c[i] - c[j];}else{if (x[i] > x[j])swap(i,j);return c[i] - c[j];}
}
int solve(){for (int i = 1; i <= k; ++i) {for (int j = i + 1; j <= k; ++j) {if (x[i] == x[j] && y[i] == y[j] && c[i] != c[j])return 0;else if (x[i] == x[j]) {if (vis1[y[i]][y[j]] && t1[y[i]][y[j]] != cha(i, j, 0))return 0;t1[y[i]][y[j]] = t1[y[j]][y[i]] = cha(i, j, 0);vis1[y[i]][y[j]] = vis1[y[j]][y[i]] = 1;}else if (y[i] == y[j]) {if (vis2[x[i]][x[j]] && t2[x[i]][x[j]] != cha(i, j, 1))return 0;t2[x[i]][x[j]] = t2[x[j]][x[i]] = cha(i, j, 1);vis2[x[i]][x[j]] = vis2[x[j]][x[i]] = 1;}}}return 1;
}
int main(){cin>>t;while (t--){memset(vis1,0,sizeof(vis1));memset(vis2,0,sizeof(vis2));memset(t1,0,sizeof(t1));memset(t2,0,sizeof(t2));scanf("%d%d%d",&n,&m,&k);for (int i = 1; i <= k; ++i)scanf("%d%d%d",&x[i],&y[i],&c[i]);if (solve()) puts("Yes");else puts("No");}return 0;
}

转载于:https://www.cnblogs.com/renxiaomiao/p/9642667.html

所罗门王的宝藏 思维相关推荐

  1. 中国石油大学 个人训练赛第五场C:所罗门王的宝藏(高斯消元)

    题目描述 据古代传说记载,所罗门王既是智慧的代表,又是财富的象征.他建立了强大而富有的国家,聚集了大批的黄金象牙和钻石,并把这些价值连城的珍宝藏在一个神秘的地方,这就是世人瞩目的"所罗门王的 ...

  2. 【BZOJ5470】【FJOI2018】—所罗门王的宝藏(BFS)

    传送门 考虑每一颗绿宝石xxx向yyy连边,把一次加看做一个点的点值加 只需要看每个环上是否恒等,bfs即可 #include<bits/stdc++.h> using namespace ...

  3. 有哪些值得收藏的运营思维导图?

    思维导图是一种放射性思考的工具,他可以将你所要思考的东西以一种图形的方式展现出来. 思维导图创始人--东尼•博赞 他是全球知名的导图创始人.大脑潜能开发专家.全脑教育专家.他曾荣获世界大脑基金会颁发的 ...

  4. 算法学习之道,应有三重境界

    https://www.toutiao.com/a6712297555167805966/ 王国维先生在<人间词话>中写道:古今之成大事业.大学问者,必经过三种境界:"昨夜西风凋 ...

  5. 学好算法,有三重境界

    王国维先生在<人间词话>中写道:古今之成大事业.大学问者,必经过三种境界:"昨夜西风凋碧树.独上高楼,望尽天涯路."此第一境也."衣带渐宽终不悔,为伊消得人憔 ...

  6. 腾讯招.NET5,居然要求精通MySQL,而不是SQLServer!

    春节将至,短暂的2020年正式要宣告结束,展望2021,可谓风起云涌,可以预见.NET5和云原生将是大热话题,NET开发者该如何把握机遇?逛逛招聘网站,看看大厂招聘,这是市场风向标.该学习的东西很多, ...

  7. 其他-私人♂收藏(比赛记录 Mar, 2019)

    OwO 03.03 [USACO19JAN] A. Redistricting 题意:给 \(g\) ,求 \(f(n)\) . \(f(i)=f(j)+[g(i)\ge g(j)],j \in (i ...

  8. 华为手机里的“麦田守望者”

    为了一个理由, 有人英勇地死去, 为了一个理由, 有人坚韧地生存. 华为手机里的"麦田守望者" 文 | 史中 (零)秋日故事 2020年10月,秋日的深圳暖阳轻抚,一位老大爷缓缓走 ...

  9. 旅行大数据 -- 全球24个时区国家在同一天的生活

    耐心看完,可以对全球国家的分布有一个初步了解. 早上6点,东萨摩亚岛的人还在沉睡,这是位于南太平洋的隶属于美国的小岛屿,面积仅有199平方公里,人口5万多人. 这里的经济来源主要是金枪鱼罐头出口,当地 ...

  10. yyb省选前的一些计划

    突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf ...

最新文章

  1. mysql+dump+选项_mysqldump的几个主要选项探究
  2. Spring.NET 1.3.1 新特性探索系列1——ASP.NET MVC的依赖注入
  3. #1074 : 字体设计
  4. websocket创建失败_SpringBoot2.2 实践WebSocket被不靠谱的百度搜索结果坑了多少人
  5. css3-5 css3鼠标、列表和尺寸样式怎么用(文字有关的样式会被继承)
  6. VC运行库修复安装一键安装
  7. Ubuntu20.04 设置虚拟内存
  8. 电脑弹窗广告太多了,程序员电脑为什么没有弹窗,那是你没打开这个设置
  9. python循环速度提高_提高python中for循环的速度
  10. XML 中大于等于小于等于的写法
  11. 黑客第二课:脱屌第一步(主要讲unix-like系统的初步知识)
  12. UTC时间(世界协调时间)和北京时间转换
  13. Chrome浏览器关闭地址栏的搜索记录
  14. C#--color颜色对照表
  15. labview简易计算机实验报告,labview 实验报告.doc
  16. border.css
  17. matlab偏分赋值错误,MATLAB ode45求解高阶微分方程组,出现“无法执行赋值,因为左侧和右侧的元素数目不同”问题...
  18. 美团云:迈出云服务一大步
  19. SQL安装时出现挂起的文件操作”错误解决办法
  20. JavaFX配置问题及解决措施:报错“缺少JavaFX组件”

热门文章

  1. AutoCAD2007 打开缓慢解决方案
  2. python将PDF转换成图片(pdf2image的使用)
  3. PC解决电子签名的方法
  4. 项目管理如何建立有效的团队沟通机制
  5. JS逆向-易班登录password参数(RSA加密)
  6. 什么是拓扑结构_拓扑结构图
  7. Seckill秒杀系统高并发优化
  8. 网页数据提取----网络投票软件开发
  9. 球体弹性碰撞位置和速度计算算法
  10. 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第0课0.4节应用颜色