摘要: 题目大意: 给你n个字符串,不同的排列有不同的代价,代价按照如下方式计算(字符串s的位置为x): 1.排在s后面的字符串有s的后缀,则代价为n^2; 2.排在s前面的字符串有s的后缀,且没有排在s后面的s的后缀,则代价为x-y(y为最后一个与s不相等的后缀的位置); 3.s没有后缀,则代价为x。 求 阅读全文
posted @ 2017-09-18 18:11 skylee03 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给定一个01序列,支持以下两种操作: 1.区间反转; 2.区间求不同的子序列数量。 思路: 首先我们考虑区间反转,这是一个经典的线段树操作。 接下来考虑求不同的子序列数量,在已知当前区间的情况下,我们有如下$O(n)$的动态规划:| $f_{i,0}=f_{i-1,0}+f_{i-1,1 阅读全文
posted @ 2017-09-18 13:21 skylee03 阅读(261) 评论(0) 推荐(1) 编辑
摘要: 题目大意: 有一个长度为n的数列,A和B两个人轮流从两端取数,B先取,A想使分数严格小于B且尽量接近B,问两人分数之差最小是多少。 思路: 折半搜索,先预处理出长度为part的最大差最小差,再预处理出后面一段能取到的不同差值,然后dfs,当范围等于part时,就在数组中二分查找一下。 这段代码在Si 阅读全文
posted @ 2017-09-18 10:32 skylee03 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 给定一个数k表示你可以从包括0的斐波那契数列中任取k个数,得到它们的和。求最小的不能得到的自然数。 思路: 打表找规律,可以发现答案为f(2k+3)-1,然后用公式f(i)=f(i/2)*f((i+1)/2-1)+f(i/2+1)*f(x+1)/2)。当然也可以用矩阵快速幂。 阅读全文
posted @ 2017-09-18 10:25 skylee03 阅读(119) 评论(0) 推荐(0) 编辑