摘要:
"Description" 思路 先求出最长的回文的前后缀,然后求每个最长回文区间能不能和前缀或后缀接起来,取接起来后长度最大的那个。 基本就是纯的马拉车算法了。就是要注意边界处理的细节,很容易出问题。我把前后缀的位置处理为开区间,回文区间为闭区间。这样边界相等就可以接起来。详见代码。 阅读全文
摘要:
"Description" 思路 一开始dp列得乱七八糟,看了题解才知道原来可以设以每个位置为起点的期望。 设dp[i]为以位置i为起点期望天数。可得dp[i] = 1 + $p_i$dp[i] + $(1 p_i)$dp[1] dp[n + 1] = 0,答案为dp[1]。 推一推公式求出dp[1 阅读全文
摘要:
"Description" 思路 首先根据奇偶性,0和2所在位置的奇偶性相同,1和3所在位置奇偶性相同。故0和2的个数与1和3的个数相同或相差1。如果不满足就NO。 由于3的左右两边必须是2;1的左右两边可以是0或2。所以先放3,计算所需的最少2的个数,如果2个数不够,就NO,否则把2放满3的左右两 阅读全文
摘要:
"Description" 思路 先用dp打表发现x出现个数是按奇数和偶数分别降序。因此可以分开奇数偶数列分开二分。 事实上如果x是i的二进制前缀,那么x就可以通过f(i)获得,即x在i的path里。 所以x的出现个数就是小于等于n中以x为二进制前缀的个数。x为偶数时还要加上x+1的个数。细节详见代 阅读全文
摘要:
"Description" 思路 题目中关键之处是必须先要把所有城堡都攻打下来,因此可以使用贪心。重要事实:对于城堡 i ,越到后面占领越好,因为越到后面兵力越足够。 每一个城堡对应一个它最远城堡,这样每一个城堡前面都有多个可占领的城堡。每攻打下一个城堡,就把能占领的城堡都占领了;当人手不够时,按照 阅读全文