刘汝佳紫书
lie to me
这个作者很懒,什么都没留下…
展开
-
第四章习题 4-1
考虑一个象棋残局,其中红方有n(2≤n≤7)个棋子,黑方只有一个将。红方除了有一个帅(G)之外还有3种可能的棋子:车(R),马(H),炮(C),并且需要考虑“蹩马腿”(如图4-4所示)与将和帅不能照面(将、帅如果同在一条直线上,中间又不隔着任何棋子的情况下,走子的一方获胜)的规则。输入所有棋子的位置,保证局面合法并且红方已经将军。你的任务是判断红方是否已经把黑方将死。关于中国象棋的相关规...原创 2018-08-14 20:26:42 · 483 阅读 · 0 评论 -
洪水!(Flooded! ACM/ICPC World Finals 1999, UVa815)
有一个n*m(1≤m,n<30)的网格,每个格子是边长10米的正方形,网格四周是无限大的墙壁。输入每个格子的海拔高度,以及网格内雨水的总体积,输出水位的海拔高度以及有多少百分比的区域有水(即高度严格小于水平面)解题思路非常直观可以直接看代码#include <bits/stdc++.h>#define mem(a,b) memset(a,b,sizeof(a)...原创 2018-08-25 10:22:52 · 577 阅读 · 0 评论 -
Ducci序列(Ducci Sequence, ACM/ICPC Seoul 2009, UVa1594)
对于一个n元组(a 1 , a 2 , …, a n ),可以对于每个数求出它和下一个数的差的绝对值,得到一个新的n元组(|a 1 -a 2 |, |a 2 -a 3 |, …, |a n -a 1 |)。重复这个过程,得到的序列称为Ducci序列,例如:(8, 11, 2, 7) -> (3, 9, 5, 1) -> (6, 4, 4, 2) -> (2, 0, 2, 4...原创 2018-08-29 18:08:54 · 516 阅读 · 0 评论 -
城市正视图(Urban Elevations, ACM/ICPC World Finals 1992, UVa221)
如图所示,有n(n≤100)个建筑物。左侧是俯视图(左上角为建筑物编号,右下角为高度),右侧是从南向北看的正视图。输入每个建筑物左下角坐标(即x、y坐标的最小值)、宽度(即x方向的长度)、深度(即y方向的长度)和高度(以上数据均为实数),输出正视图中能看到的所有建筑物,按照左下角x坐标从小到大进行排序。左下角x坐标相同时,按y坐标从小到大排序。输入保证不同的x坐标不会很接近(即任意两个x...原创 2018-08-29 13:03:47 · 559 阅读 · 0 评论 -
特别困的学生(Extraordinarily Tired Students, ACM/ICPC Xi'an 2006, UVa12108)
课堂上有n个学生(n≤10)。每个学生都有一个“睡眠-清醒”周期,其中第i个学生醒A i 分钟后睡B i 分钟,然后重复(1≤A i ,B i ≤5),初始时第i个学生处在他的周期的第C i 分钟。每个学生在临睡前会察看全班睡觉人数是否严格大于清醒人数,只有这个条件满足时才睡觉,否则就坚持听课A i 分钟后再次检查这个条件。问经过多长时间后全班都清醒。如果用(A,B,C)描述一些学生,则图...原创 2018-08-24 19:27:52 · 613 阅读 · 0 评论 -
数据库(Database,ACM/ICPC NEERC 2009,UVa1592)
输入一个n行m列的数据库(1≤n≤10000,1≤i≤10),是否存在两个不同行r1,r2和两个不同列c1,c2,使得这两行和这两列相同(即(r1,c1)和(r2,c1)相同,(r1,c2)和(r2,c2)相同)。例如,对于如图5-3所示的数据库,第2、3行和第2、3列满足要求。 题意可以描述为: 寻找两个相邻的元素 和另外一个两个相邻的元素的值是一样的 既然要寻找相邻的两...原创 2018-08-29 00:21:42 · 460 阅读 · 0 评论 -
例题5-9 数据库(Database,ACM/ICPC NEERC 2009,UVa1592)
输入正整数n以及n个文件名,排序后按列优先的方式左对齐输出。假设最长文件名有M字符,则最右列有M字符,其他列都是M+2字符。 题目要求行数尽量的短那么,就是列数尽量的长,所以我们可以算出列数为:(maxcol - M) / (M + 2) 这样我们就可以得到代码:#include <bits/stdc++.h>#define mem(a,b) memse...原创 2018-08-28 10:26:52 · 321 阅读 · 0 评论 -
对称轴(Symmetry, ACM/ICPC Seoul 2004, UVa1595)
给出平面上N(N≤1000)个点,问是否可以找到一条竖线,使得所有点左右对称。例如图中,左边的图形有对称轴,右边没有。第一眼看上去没什么思路,感觉挺难的后来看了别人的发现确实不难对称轴 显然是在(maxnum + minnum ) / 2上所以我们只需要判断每个 x+(maxnum + minnum ) / 2 ,y 在数轴行是否存在 就可以知道了#pragma GCC ...原创 2018-08-30 20:38:47 · 579 阅读 · 0 评论 -
复合词(Compound Words, UVa 10391)
给出一个词典,找出所有的复合词,即恰好有两个单词连接而成的单词。输入每行都是一个由小写字母组成的单词。输入已按照字典序从小到大排序,且不超过120000个单词。输出所有复合词,按照字典序从小到大排列。题目很好 理解 用好久没字典树了,写了很多坑要注意:自己和自己也可以组成一个比如 a aa aa是可以输出的#pragma GCC optimize(2)#includ...原创 2018-08-30 16:31:26 · 1008 阅读 · 0 评论 -
Morse Mismatches, ACM/ICPC World Finals 1997, UVa508
输入每个字母的Morse编码,一个词典以及若干个编码。对于每个编码,判断它可能是哪个单词。如果有多个单词精确匹配,任选一个输出并且后面加上“!”;如果无法精确匹配,可以在编码尾部增加或删除一些字符以后匹配某个单词(增加或删除的字符应尽量少)。如果有多个单词可以这样匹配上,任选一个添加或者删除最短的那个并且在后面加上“?”。 题目比较简单,没有太多的技巧,可以直接看代码。#inc...原创 2018-08-23 11:42:47 · 192 阅读 · 0 评论 -
习题4-5 IP网络(IP Networks, ACM/ICPC NEERC 2005, UVa1590)
可以用一个网络地址和一个子网掩码描述一个子网(即连续的IP地址范围)。其中子网掩码包含32个二进制位,前32-n位为1,后n位为0,网络地址的前32-n位任意,后n位为0。所有前32-n位和网络地址相同的IP都属于此网络。例如,网络地址为194.85.160.176(二进制为11000010|01010101|10100000|10110000),子网掩码为255.255.255.248(...原创 2018-08-16 22:18:32 · 529 阅读 · 0 评论 -
习题4-4 骰子涂色(Cube painting, UVa 253)
输入两个骰子,判断二者是否等价。每个骰子用6个字母表示。这题有点懵,解题的方法,完全没有和函数有半毛钱关系啊。和之前几题完全不同。 这题纯粹就是找规律规律很明显 如果能通过旋转得到的话 那么两个骰子的对应面一定是相等的比如 A 筛子 的 1 等于 B 筛子 1 那么 A筛子的 6就一定 等于 B筛子的 6如果不相等的话那么就说明不能通过旋转得到(来自 vj 上别人的AC代码)...原创 2018-08-16 13:51:49 · 701 阅读 · 0 评论 -
4-5解法2
是将所有操作保存,然后对于每个查询重新执行每个操作,但不需要计算整个电子表格的变化,而只需关注所查询的单元格的位置变化。对于题目给定的规模来说,这个方法不仅更好写,而且效率更高。(来自紫书)比较简单 直接看代码:#include <cstdio>#include <cstring>#include <iostream>typedef lon...原创 2018-08-13 21:36:41 · 135 阅读 · 0 评论 -
Spreadsheet Tracking 例题4-5
题目链接大意为经过几次操作以后原来的位置现在的位置在哪。操作有两种EX r1 c1 r2 c2交换单元格(r1,c1),(r2,c2)。<command> A x 1 x 2 … x A 插入或删除A行或列(DC-删除列,DR-删除行,IC-插入列,IR-插入行,1≤A≤10)。题意不难理解 题目看上去有点难紫书上的使用函数处理确实挺好的第二种解法链接第...原创 2018-08-13 21:05:33 · 176 阅读 · 0 评论 -
Message Decoding(紫书例题 4-4)
题目其实已经说明了这一题的处理方式,考虑下面的01串序列:0, 00, 01, 10, 000, 001, 010, 011, 100, 101, 110, 0000, 0001, …, 1101, 1110, 00000, …首先是长度为1的串,然后是长度为2的串,依此类推。如果看成二进制,相同长度的后一个串等于前一个串加1。注意上述序列中不存在全为1的串。你的任务是编写一个解码程序。...原创 2018-08-13 12:35:10 · 206 阅读 · 0 评论 -
习题4-3 黑白棋(Othello, ACM/ICPC World Finals 1992, UVa220)
代码转载自:https://blog.csdn.net/XieNaoban/article/details/52078533你的任务是模拟黑白棋游戏的进程。黑白棋的规则为:黑白双方轮流放棋子,每次必须让新放的棋子“夹住”至少一枚对方棋子,然后把所有被新放棋子“夹住”的对方棋子替换成己方棋子。一段连续(横、竖或者斜向)的同色棋子被“夹住”的条件是两端都是对方棋子(不能是空位)。如图4-6(...原创 2018-08-15 21:57:36 · 674 阅读 · 0 评论 -
习题 4-2(UVA-201 Squares )
题目大意:有n行n列(2≤n≤9)的小黑点,还有m条线段连接其中的一些黑点。统计这些线段连成了多少个正方形(每种边长分别统计)。行从上到下编号为1~n,列从左到右编号为1~n。边用H i j和V i j表示,分别代表边(i,j)-(i,j+1)和(j,i)-(j+1,i)。如图4-5所示最左边的线段用V 1 1表示。图中包含两个边长为1的正方形和一个边长为2的正方形。写的很慢,一开...原创 2018-08-15 14:19:36 · 284 阅读 · 0 评论 -
交换学生(Foreign Exchange, UVa 10763)
有n(1≤n≤500000)个学生想交换到其他学校学习。为了简单起见,规定每个想从A学校换到B学校的学生必须找一个想从B换到A的“搭档”。如果每个人都能找到搭档(一个人不能当多个人的搭档),学校就会同意他们交换。每个学生用两个整数A、B表示,你的任务是判断交换是否可以进行。代码是在vj上抄的一位老哥的 当时看到这个被惊呆了 for(;*s1>='0';x = (x<...原创 2018-08-29 21:06:41 · 796 阅读 · 0 评论