A:训练教官
输入样例
1 | 2 |
输出样例
1 | 2.414214 |
题解
n只有10,所以直接全排列暴力做
1 |
|
B:假签到题
输入样例
1 | 3 2 4 |
输出样例
1 | 2 |
题解
这个题没有什么说的,签到题,有人用double答案错误,计算机精度问题,完全不需要用double
1 |
|
C1:逃出地牢
输入样例
1 | 1 |
输出样例
1 | 10 |
题解
每行选一个最大的加起来就好了,也没有什么可以解释的
1 | const int maxn=500+10; |
C2:逃出地牢plus
输入样例
1 | 1 |
输出样例
1 | 10 |
题解
经典dp
1 |
|
D:作业写不完了
输入样例
1 | 2 |
输出样例
1 | * * **** * **** |
样例解释
这个n控制的是每个字母的端点之间的*字符数目是n个。
1 | 下面这个H的端点用#字符表示,这个只是为了让参赛者更好理解,实际输出不要输出#字符 |
题解
模拟,考验代码功底
1 |
|
E:禁止套娃
题解
数学问题,答案是3^n,可能多算一下会发现规律,但是要用快速幂来做奥,不然会超时
1 |
|
F1:没人比我更懂
题解
数据范围1e18,刚好超出longlong范围,其实算的时候用5 3来算,结果输出+00就好了,注意答案为0输出0,不要输出00
1 |
|
F2:没人比我更懂Pro
题解
背包dp,可自行百度背包九讲,我就不嫌丑了
1 |
|
G:小西的军训
输入样例
1 | 4 |
输出样例
1 | -1 |
样例解释
首先所有的同学刚开始都自成一列。
第一个操作M 2 3,就是把2号同学所在的队列接在3号同学的队列后面,因为初始每个队列只有一个同学,所以只需要将2号同学调动到3号同学后面,这时2号和3号同学成为了新的一列。
第二个操作C 1 2,询问1号和2号同学是否在同一列,根据之前的操作他两实际并不是在同一列,所以输出-1。
第三个操作M 2 4,把2号同学所在的队列接在4号同学所在队列的后面,这个时候4号同学的队列里面的同学顺序是这样的4 2 3。
第四个操作C 4 2,询问4号同学和2号同学是否在同一列,实际他两确实在同一列,所以输出他两之间的同学数目。
代码:并查集顺带更新一些数据
没想到没人过,并查集加两个数组顺带更新就好了
1 |
|
H:教官的决定
输入样例
1 | 6 4 |
输出样例
1 | 2/5 |
题解
经典莫队,还是没人过,还是了解太少了
1 |
|
I:签到题?
输入样例
1 | 1 2 |
输出样例
1 | 9 |
题解
这个签到题就是加一个点就相当于横竖都分成了两半,画一画规律就出来了
1 |
|
J:听说有人在家变胖了
输入样例
1 | 3 15 |
输出样例
1 | 1066 |
题解:
分数规划,或者dp都可以做,贪心过了那么多是我万万没想到的,所以加了一组数据,我谢罪,贪心这个题思路完全不行奥,
1 |
|
K,防ak题
点分治
题解
1 |
|