Noip2017模拟赛4(B组)
题目名称 |
最小距离 |
海战 |
覆盖墙壁 |
倒水 |
存盘文件名 |
dis |
battle |
wall |
Water |
输入文件名 |
dis.in |
battle.in |
wall.in |
water.in |
输出文件名 |
dis.out |
battle.out |
wall.out |
water.out |
时限 |
1s |
1s |
1s |
1s |
内存限制 |
64M |
64M |
128M |
64M |
【注意事项】:请自行完成题目,切勿讨论。
题1 最小距离
【问题描述】
栋栋有两个相同长度的字符串A和B,它们的长度都为n。为了了解这两个字符串的相似性,栋栋定义了一个A和B之间的距离函数:对于两个字母,它们的距离定义为它们的ASCII码之间的差的绝对值;对于两个串,它们的距离定义为它们的所有对应位置上的字母的距离之和。
如串A="abcd",B="aaaa",则A与B的距离为0+1+2+3=6。
给出串A和B,栋栋想把A中的正好K个字母变为其他的字母,使变化后的串与B的距离最小。
【输入格式】
输入文件dis.in中的前两行每行一个字符串,分别表示串A和串B。A和B一定是等长的,而串中的每个字母一定是'a'-'z'中的一个。
输入文件第三行为一个正整数k,表示要修改A中的多少个字母。
【输出格式】
输出到dis.out中,仅一个数,表示A修改k个字母后与B的距离的最小值。
【输入样例1】
aaa
baz
1
【输出样例1】
1
【输入样例2】
aa
aa
2
【输出样例2】
2
【样例说明】
样例1中,把A的最后一个字母a改为z即可。
样例2中,A的两个字母都需要修改,都改为b后距离为2。
【数据规模】
1<=k<=A,B的长度<=50
题2 海战
【问题描述】
在峰会期间,武装部队得处于高度戒备。警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机。此外,巡洋船只和舰队将被派去保护海岸线。不幸的是因为种种原因,国防海军部仅有很少的几位军官能指挥大型海战。因此,他们考虑培养一些新的海军指挥官,他们选择了“海战”游戏来帮助学习。
在这个著名的游戏中,在一个方形的盘上放置了固定数量和形状的船只,每只船却不能碰到其它的船。在这个题中,我们仅考虑船是方形的,所有的船只都是由图形组成的方形。编写程序求出该棋盘上放置的船只的总数。
【输入格式】
输入文件头一行由用空格隔开的两个整数R和C组成,1<=R,C<=1000,这两个数分别表示游戏棋盘的行数和列数。接下来的R行每行包含C个字符,每个字符可以为“#”,也可为“.”,“#”表示船只的一部分,“.”表示水。
【输出格式】
为每一个段落输出一行解。如果船的位置放得正确(即棋盘上只存在相互之间不能接触的方形,如果两个“#”号上下相邻或左右相邻却分属两艘不同的船只,则称这两艘船相互接触了)。就输出一段话“There are S ships.”,S表示船只的数量。否则输出“Bad placement.”。
【输入样例】battle.in
6 8
.....#.#
##.....#
##.....#
.......#
#......#
#..#...#
【输出样例】battle.out
There are 5 ships.
【题目描述】
你有一个长为N宽为2的墙壁,给你两种转头:一个长2宽1,另一个是L型覆盖3个单元的转头。如下图:
转头可以旋转,两种转头可以无限制提供。你的任务是计算用这两种来覆盖N*2的墙壁的覆盖方法。例如一个2*3的墙可以有5种覆盖方法,如下:
注意可以使用两种转头混合起来覆盖,如2*4的墙可以这样覆盖:
给定N,要求计算2*N的墙壁的覆盖方法。由于结果很打,所以只要求出输出最后4位。例如2*13的覆盖方法为13465,只需输出3465即可。如果答案少于4位,就直接输出就可以,不用加0,如N=3时输出5.
【输入格式】
一个整数N(1<=n<=100 0000),表示墙壁的长。
【输出格式】
输出覆盖方法的最后4位,如果不足4位就输出整个答案。
【样例输入】
13
【样例输出】
3465
题4 倒水
【问题描述】
一天辰辰买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水。接着辰辰发现瓶子实在太多了,于是他决定保留不超过K个瓶子,每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒进另一个里,然后把空瓶丢弃(不能丢弃有水的瓶子)。
显然在某些情况下辰辰无法达到目标,比如N=3,K=1。此时辰辰会重新购买一些新的瓶子(新瓶子容量无限,开始时有1升水)以达到目标。
现在辰辰想知道最少需要多少新瓶子才能达到目标呢?
输入文件一行两个正整数N和K,其中1<=n<=10^9,k<=1000。
输出文件包含一个非负整数,表示最少需要购买的瓶子数量。
【输入样例1】
3 1
【输出样例1】
1
【输入样例2】
13 2
【输出样例2】
3
【输入样例3】
1000000 5
【输出样例3】
15808
【数据规模】
对于50%的数据,n<=10^7;对于100%的数据如题目。
【提示】考虑lowbit运算