\(T1:\)
题目链接
入门模拟题。
维护这个篮子现在的作用端点的位置即可。
预计得分:\(100pts\)。
\(T2:\)
题目链接
读题可以发现 \(n \leq 400\)。
于是可以想到直接暴力预处理前缀和。
然后用 \(O(n^3)\) 枚举正方形左上角的点的坐标 \([i,j]\) 和这个正方形的边长即可。
预计得分:\(100pts\)。
\(T3:\)
题目链接
看到题的第一样想到的就是 \(O(n^2)\) 去枚举两个值。
\(but\),这个算法会超时。
于是试着按位异或。发现只有 \(0\) 和 \(1\) 的情况下才会对答案贡献:
根据上文所说,只有 \(0\) 和 \(1\) 才会对答案贡献,于是根据组合数学可得,所有数的这一位异或完 \(1\) 的个数是这一列中:
\(0\) 的个数 \(\times\) \(1\) 的个数。
因为当前是二进制,所以再把求出来的答案乘上权值即可,即最终答案为:
当前权值 \(\times\) 这一列各个数的异或完 \(1\) 的个数。
此时时间复杂度为: \(O(n log n)\)。
预计得分:\(100pts\)。
\(T4:\)
题目链接
很遗憾,考场打着打着摸鱼去了,连暴力都没打。
啊啊啊!!! 烦死了。
预计得分:\(0pts\)。
考后订正:
想跟高的异性跳舞,那么与其跳的人必须满足两点:
一是比其高。
二是想和矮的异性跳。
对于想和比其矮的人跳舞的人,那么与他跳的人必须满足两点:
一是比其矮。
二是想和高的异性跳。
那么我们可以存下每个性别想和高的人跳的人和想和矮的人跳的人分开存,然后去做匹配。
直接贪心。
继续思考贪心策略:
我们可以发现对于一个女生,当她可以被一个比她矮(高)的男生匹配时
比那个男生更矮(高)的男生也一定可以匹配她,
可是,比那个男生还要矮(高)的男生,他的取值范围会原来的那个人更大,
也就是说可以配他的人更多,那么就后给他分配 配偶 舞伴。
由此,最矮且要和高的人跳的人与最高且要和矮的人跳的人可以匹配的人最多,
反之最少,那么先给少的分,毕竟当可以匹配多的人匹配到后,其他人可以匹配到的人就会减少。
符合条件多的少一个无碍,符合条件少的少一个可就无了。
\(T5:\)
题目链接
乍一眼题目很离谱,其实理解了就显得很简单。
预计得分:\(40pts\)。
值得注意的是在 \(slope\) 的长度只为偶数。
所以,便可得出以下结论:
分析:
为什么这样一直进行下去是可以完成排序的?
对于 8 7 6 5 1 2 3 4 ,变成 5 6 7 8 1 2 3 4 ,那么在区间 \([1,4]\) 和区间 \([5,8]\) 就是有序的了,同样可以想到对整个序列这样转之后序列就在一些范围上有序了。
由于题目要求划分后的序列长度必须为偶数,所以在有序区间 \([1,4]\) 内的数就不能划分,否则会划分成 5|6|7|8 ,长度不为偶数
这样就会得到这样一个划分 5 6 7|8 1|2 3 4,恰好在两个有序区间的交界处且这个新的划分区间长度为 2。
因为翻转后可能会产生的连续三个递减子序列,会被抵消掉。这里归功于 \(slope\) 的长度只为偶数。
即使是翻转以后 5 6 7 1 8 2 3 4,也由于区间内元素的有序性只能划分为长度为2的新区间 5 6|7 1|8 2|3 4。
继续翻转之后也是这样的 5 6 1 7 2 8 3 4,也只能划分为长度为2的新区间。
这样就等价于只能选择相邻的元素交换了。也就等价去经典的求逆序对问题了。
\(T6:\)
题目链接
难题一道......
没有任何思路,于是只能考虑类似马的遍历。
直接暴力搜索。
预计得分:\(60pts\)。