【题解】2019年湘潭大学新生趣味程序设计竞赛
A、 15 and 20
- 猜拳游戏的模拟
- 把四个数加起来,判断一下即可
B、 显示器
- 求给定比例的最大分辨率
- 直接求横纵的最小倍数,取最小的;
- 也可以枚举倍数
C、 Sequence
- ,已知 , 求 。
- 手工枚举一下,可以发现循环节长为 。
D、 Carrot
- 个奇数, 分成两个集合,使得集合累加和的差值最小
- 结论: , 差值为 ; 其他, 差值为 。
- 证明:
- 连续四个奇数为 分成两组 , 差值为 。所以,当 , 结果为 。
- 当 时, 我们把 以外的所有数按连续 个进行分组,差值为 ,然后把 随便给某个集合,差值为 。由于 是奇数,所有奇数个奇数的和为奇数,所以分成两组,差值最小为 。所以,之前的构造为一个最小差值分组。
- 当 时,结果显然为 。其他 时,最小的 个数分为 和 , 差值为 。显然最后结果为 。
- 当 时,采用类似于第 步的构造和利用奇偶性,得到最小值为 。
E、 Cuboid
- 长方体沿表面走对角的最短路径长度
- 结论 当
- 平面上,两点间直线最短
- 将长方体展开,很容易得到以上结论。
F、 Order
- 个订单,求完成时间的最小累加和
- 最优安排是按订单数从小到大安排生成
- 反证
- 假设一个最优安排中,存在 , 但是 。我们交换 和 的位置,得到一个新的安排。
- 显然对于 或者 的订单,这种交换没有影响。
- 对于 的订单,显然,其完成时间是小于或等于原有安排的。
- 矛盾
G、 Ball
- 一个球,从左上角弹出,弹几库到右下角?
- 结论: 和 都为奇数时能弹到右下角,需要弹 库
H、 奇怪的回文子串
- 构造一个长度为 的字符串,要求其中最长回文子串的长度处于 之间,且出现各种字符的次数不超过给定的限制。
- 做法很多
- 先构造一个类似于 的回文串,长度为 。然后取其他字符填充成 的形式,然后再用这个子串按顺序填充成 长的字符串 (雷智凯)
- 先利用无限制字符,构造一个类似于 的串,然后随机产生后面的字符,要求随机出来的字符不超过限制,且不等于前 和前 个字符。 (谢勇)
I、 Line
- 过矩形外一点画一条直线,分割矩形使得两边面积相等。
- 结论: 取矩形的中点 和 给定点 画一条直线 即为所求。
- 显然,由于对称性,所有过中点的直线必然平分矩形。
- 注意:中点坐标需要除 ,可能为小数,为此先把坐标都乘 来处理。
J、 勾股定理
- 给一个整数 ,求另外两个整数 和 ,使其构成直角三角形
- 构造的方法也很多
- 不妨设 ,所以 必须为奇数,解得
- 不妨设 ,所以 必须为偶数,解得
K、 BAD String
- 交换一个串的两个字符以后,使得串不含 这个子串
- 构造方法也很多
- 统计 的数量 ,显然每次交换最多破坏两个 子串,所以当 时无解
- 如果 , 交换成
- 如果 , 交换成
- 否则,随机交换两个字符,验证一下。