小试4
来源:互联网 发布:安大略理工大学知乎 编辑:程序博客网 时间:2024/06/06 21:45
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.
第3题:覆盖墙壁(wall)
【题目描述】
你有一个长为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运算
- 小试4
- 小试4解析
- C++ opencv小试4
- 小试循环(4)
- 项目3:小试循环---(4)求值
- 小技巧、小经验(4)
- 小试 priority_queue
- 小试iBatis
- 小试iBatis
- 小试zlib
- 小试“鸡”刀
- 小试iBatis
- 小试Windows Vista
- 小试awk
- 小试A*
- 小试Samba
- 小试铅笔刀
- ajax小试身手
- 《重磅消息》深度强化学习入门及进阶课程第二期开课啦
- UVA11987:Almost Union-Find (并查集的删除)
- WOJ1167-Oil Detecting
- Toast之显示文本
- hdu 1181 并查集
- 小试4
- 检测动态table的行数,可判断非空
- bzoj1015 [JSOI2008]星球大战(离线操作+并查集)
- 【android】2、SharePreferences
- Android studio项目依赖导入
- jQuery插件之Autocomplete
- Android_Recyclerview实现频道管理
- Hibernate缓存机制
- JavaScrt基础知识点