讲真,今天的题真是究极烧脑。
100/0/0/36
1432. 输油管道 (Standard IO)
Time Limits:
1000 ms Memory Limits: 65536 KB Detailed Limits
Goto ProblemSet
Description
请你帮忙设计一个从城市M到城市Z的输油管道,现在已经把整个区域划分为R行C列,每个单元格可能是空的也可能是以下7种基本管道之一:
油从城市M流向Z,‘+’型管道比较特殊,因为石油必须在两个方向(垂直和水平)上传输,如下图所示: 现在恐怖分子弄到了输油管道的设计图,并把其中一个单元格中的管道偷走了,请你帮忙找到偷走的管道的位置以及形状。 Input
第一行包含两个整数R和C(1<=R,C<=25)。
接下来R行每行C个字符描述被偷之后的形状,字符分为以下三种: (1)‘.’表示空; (2)字符‘|’(ASCII为124)、‘-’、‘+’、‘1’、‘2’、‘3’、‘4’描述管道的形状; (3)‘M’和‘Z’表示城市,两个都是只出现一次。 输入保证石油的流向是唯一的,只有一个管道跟M和Z相连,除此此外,保证没有多余的管道,也就是说所有的管道在加进被偷的管道后一定都会被用上。 输入保证有解而且是唯一的。 Output
输出被偷走的管道的行号和列号以及管道的类型。
Sample Input输入1: 3 7 ....... .M-.-Z. ....... 输入2: 3 5 ..1-M 1-+.. Z.23. 输入3: 6 10 Z.1----4.. |.|....|.. |..14..M.. 2-+++4.... ..2323.... .......... Sample Output输出1: 2 4 - 输出2: 2 4 4 输出3: 3 3 |
|
水题,记录两个值,一个是当前点,一个是上次经过的点,然后分类讨论即可。
1433. 数码问题 (Standard IO)
Time Limits:
1000 ms Memory Limits: 65536 KB Detailed Limits
Goto ProblemSet
Description
Alice有一个N*N的格子,把1-N^2按照从上到下从左到右的顺序填进表格中,允许在表格上进行两种操作:
(1) 旋转行——这一行的数向右移动一个位置,而最后一列的数会移到第一列; (2) 旋转列——这一列的数向下移动一个位置,最后一行的数会移到第一行。 Alice想把数X移到(R,C)处可以采用以下方法: •如果X不在C这一列,通过旋转行操作把X移到C这一列; •如果X不在R这一行,通过旋转列操作把X移到R这一行。 下面是一个把6移到(3,4)的例子: Alice现在想采用上述方法,依次把K个数移到各自的目标位置,编程计算每个数需要几次操作。 Input
第一行包含两个整数N(12<=N<=10000)和K(1<=K<=1000)。
接下来K行,每行包含三个整数X(1<=X<=N^2)、R和C(1<=R,C<=N),描述需要移动的数以及目标位置。 Alice必须按照输入顺序依次移动。 Output
输出K行,每行输出一个整数,表示操作次数。
Sample Input输入1: 4 1 6 3 4 输入2: 4 2 6 3 4 6 2 2 输入3: 5 3 1 2 2 2 2 2 12 5 5 Sample Output输出1: 3 输出2: 3 5 输出3: 2 5 3
|
这道题最恶心的地方在于如何确定一个点未来的位置在哪里,假设我们某次操作移动了点(x1,y1)至(x2,y2),那么先向右移动了(n+y2-y1)%n步,同时第x1行上所有点都向右移动这么多步,此时向下移动(n+x2-x1)%n步,第y2列上的数同时往下移动这么多步,也就是说未来处在(x1,y)的点坐标会变为(x1,y+(n+y2-y1)%n).
但是如果我们把每一次移动对应的行和列都记下,对于一个点给他重现一遍,我们就知道它未来的位置了。
Description
学生都很喜欢灌水,第一天只有Alice给她的每个朋友灌了一次水,从第二天开始,所有学生(包括Alice)将会有规律地去灌水:
•如果前一天被灌了奇数次的水,他们将会给每个朋友灌一次水; •如果前一天被灌了偶数次的水,他们将会给每个朋友灌两次水。 学生编号为1到N,Alice为1号,学生之间的朋友关系会给出。 计算H天后一共灌了几次水。 Input
输入一行包含两个整数N和H(1<=N<=20,1<=H<=10^9),表示学生数和天数。
接下来N行,每行包含N个‘0’或‘1’,(A,B)处的字符表示A和B的关系,‘1’表示是朋友关系,‘0’表示不是。注意自己和自己不是朋友关系,输入保证该矩阵是对称的。 Output
输出H天后一共灌水的数量。
Sample Input输入1: 4 1 0110 1001 1001 0110 输入2: 4 2 0110 1001 1001 0110 输入3: 5 3 01000 10110 01000 01001 00010 Sample Output输出1: 2 输出2: 14 输出3: 26 Data ConstraintHint
【样例解释】
样例2中,第一天Alice灌了2次水,第二天学生1和学生4给学生2和学生3都灌了2次水,而学生2和学生3给学生1和学生4各灌水1次,2天一共灌了12次水。 【数据范围】 50%的数据 H<=1000。 |
这题数据疯狂暗示你找循环节。
正解就是先模拟一遍每一天的灌水情况,直到找到循环节,记录一下循环节,其他的信息只要跳过循环节再加上一部分就可以了。
Description
在遥远的火星上,上面的植物非常奇怪,都是长方形的,每个植物用三个数来描述:左边界L、右边界R以及高度H,如下图所示描述一个植物:L=2,R=5和H=4。
每天都有一个新植物长出来,第一天的植物高度为1,后面每天长出的植物比前一天的高1。 当一个新植物长出来的时候,跟其他植物的水平线段相交处会长出一朵小花(前提是之前没有长出花朵),如果线段交于端点,是不会长花的。 下图为样例1的示意图: 给出每天的植物的坐标,计算每天长出多少新花。 Input
第一行包含一个整数N(1<=N<=100000),表示天数。
接下来N行,每行两个整数L和R(1<=L<=R<=100000),表示植物的左右边界。 Output
输出每天长出新植物后增加新花的数量。
Sample Input输入1: 4 1 4 3 7 1 6 2 6 输入2: 5 1 3 3 5 3 9 2 4 3 8 Sample Output输出1: 0 1 1 2 输出2: 0 0 0 3 2 |
说到开花,花是植物,植物需要水,所以这是一道水题,不多说了,用线段树维护答案即可。
总结:很弱,以后还要加油。