Test(5)

博客包含三道算法题。一是棋盘放炮问题,求在N行M列棋盘放炮且互不攻击的方案数;二是奶牛拍照问题,要为连续区间奶牛拍照,使各品种奶牛数量公平,求最大照片尺寸;三是染色问题,求将若干位置染成目标状态所需最少天数。

T1:互不攻击的炮
(canon.cpp/in/out 1s 128M)
在一个 N 行 M 列的棋盘上,让你放若干个炮(可以是 0 个),使得没有一个炮可以攻击到
另一个炮,请问有多少种放置方法。大家肯定很清楚,在中国象棋中炮的行走方式是:一个
炮攻击到另一个炮,当且仅当它们在同一行或同一列中,且它们之间恰好有一个棋子。你也
来和小可可一起锻炼一下思维吧!
输入
一行包含两个整数 N,M,之间由一个空格隔开。 N 和 M 均不超过 6
输出
总共的方案数,由于该值可能很大,只需给出方案数模 9999973 的结果。
样例
输入
1 3
输出
7
提示
除了 3 个格子里都塞满了炮以外,其它方案都是可行的,所以一共有 222-1=7 种方案。
T2:Photography
(photo.cpp/in/out 1s 256M)
农夫 John(以后简称“FJ”)的 N 头奶牛站在一个一维长篱笆上的不同位置 (1 <= N <=
100,000)。第 i 头奶牛站在位置 x_i (一个处于范围 0…1,000,000,000 的整数),其品种为 b_i
(要么为‘G’,表示根西种 Guernsey,要么为‘H’,表示霍斯坦种 Holstein)。每头奶牛的位置
各不相同。FJ 想要为一段连续区间内的奶牛拍张照片,用来参加郡里的展览会,但是他想让
照片里各个品种奶牛的数量是“公平的”。所以,他想要使得无论照片里出现了多少个品种的
奶牛,这些品种奶牛的数量必须相同(例如,一张照片里可以全是霍斯坦种奶牛,也可以出
现 27 头根西种奶牛和 27 头霍斯坦种奶牛,但不能出现 10 头霍斯坦种奶牛和 9 头根西种奶
牛,这种情况下各个品种数量不同)。帮助 FJ 拍一张满足其要求的最大尺寸照片。一张照片
的尺寸为照片中最左边的奶牛和最右边的奶牛的位置差。可能 FJ 拍出的照片里只有一头奶
牛,此时照片的尺寸为 0。
输入
第 1 行:整数 N。
第 2…1+N 行:第 i+1 行包含 x_i 和 b_i。
输出
第 1 行:一个整数,表示一张“公平的”照片的最大尺寸。
样例输入
6
4 G
10 H
7 G
16 G
1 G
3 H
【输入说明】
有 6 头奶牛(从左到右)品种分别为 G, H, G, G, H, G。
样例输出
7
【输出说明】
FJ 可以拍出的最大尺寸“公平的”照片是出现中间 4 头奶牛的照片,包括了 2 头霍斯坦种奶牛
和 2 头根西种奶牛。
T3:染色
(color.cpp/in/out 1s 256M)
给你一个若干个位置,每个位置 color 为空,标记为 0.
每天你可以选择一些不相交区间的,选好一个区间后用一种 color 染上去。再选择一个区间
用另一种 color 染上。注意每次 color 只能用一次。染完过了一天后 color 就固定下来了。
问要染多少天,形成目标状态
输入
第一行给出数字 N,代表位置个数,1≤N≤100000 接下来 N 行,每行一个数字代表目标状
态时这个位置上的 color.
输出
最少要染多少次,无解输出-1
样例
输入
7
0
1
4
5
1
3
3
输出
2
提示
//第一天选择[2,5]染上 1,[6,7]染上 3,第二天[3,3]染上 4,[4,4]染上 5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值