来源 2018 ACM-ICPC, Universidad Nacional de Colombia Programming Contest
队友太强了orz
A - Apple Trees
0时刻有一个0岁的皮皮,每个皮皮会在10,20,30,40岁时分别生下16,9,4,1个皮皮,每个皮皮会在45岁死亡。问第T年有几个皮皮。
可以将皮皮分为5种:0到9岁,10到19岁,20到29岁,30到39岁,40到50岁。
然后就可以写出今年到10年后的转移矩阵,使用矩阵快速幂可以求解。
因为皮皮的繁衍只会在整十年进行,所以所有皮皮的年龄个位数都是一样的,即如果
T%10>=5
T
%
10
>=
5
,则不用计算40岁以上的皮皮。
总结:
想法到位,但是矩阵快速幂写起来很不熟练。
将皮皮分成5段而不是10段很有效。
B - Binary Strings
给定两个长度相同的零一串,要求使用两种操作将串A变为串B:1.把尾部数字拿到头部,2.flip两个相邻的数字。问最少使用几次操作2,无解输出-1.
D - Divorce
给定一个坐标纸上的凸多边形,有m条经过两个顶点的直线都可以将它分为两部分,求哪种分法使得较小部分的面积最大。
I - Intense Bit Wheel
将一个数表示为2进制后,在n个二进制位里循环左移m位,输出结果。
L - L-shapes
用L形状将n*n的网格填满,n为2的幂次且网格之中已有一个格子被填充,输出方案。