上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 32 下一页
摘要: 题目链接 #题目大意 三种操作,破坏一个点,修复最后被破坏的点,询问包含这个点的连续区间的最大长度。 #解题思路 用线段树维护父节点的前缀最长区间和后缀最长区间。 父节点的前缀最长区间最小等于左二子的最长前缀区间,如果左儿子的最长前缀区间是整个区间,那么父节点的最长前缀区间则还可以加上右二子的最长前 阅读全文
posted @ 2020-10-17 21:27 shuitiangong 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 给一个环,然后求每次修改后的最大子段和,最大子段和不能包含整个子段。 #解题思路 以往解决环形问题都是通过将两个相同的数组拼接起来实现的,但是这个题如果这么写的话要考虑区间长度问题,很麻烦。 有一个巧妙的方法,在维护区间最大子段和的同时,再维护一个区间最小子段和,那么考虑两个数 阅读全文
posted @ 2020-10-16 20:31 shuitiangong 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 有n个人,依次给出这n个人进入队列时前面有多少人p[i],和它的权值v[i],求最终队列的权值序列。 #解题思路 用线段树维护一个数组,最初全是1,代表每个位置有没有人。从后往前推,最后一个人的位置肯定是他最终的位置,然后把他删去,那么消去了最后一个人的影响,倒数第二个人的位置 阅读全文
posted @ 2020-10-15 07:39 shuitiangong 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 一个数字可以移动到$i+arr[i]$和$i-arr[i]$(合法的话),问每个位置移动到与当前的值奇偶性不同的位置需要的次数。 #解题思路 一个数字可以移动到i+arr[i]和i-arr[i],设$d[i]$表示能到达奇偶性不同的点需要的最小次数,如果这个数一次就可以,那么d 阅读全文
posted @ 2020-10-11 21:31 shuitiangong 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 略 #解题思路 对于相等的关系很好维护,关键是对于不想等的关系。如果$x_i$与$x_j$不相等,那么$x_i$所在集合中的所有点都是和$x_j$所在集合中的所有点不相等的。 把不相等的$x_i$与$x_j$,所在集合的代表结点建一条边,如果$x_i$所在集合要和其他集合合并, 阅读全文
posted @ 2020-10-11 16:45 shuitiangong 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 略 #解题思路 最大回文子串的变形。用dp[i][j][k][l]表示第一个字符串第$ij$这个子段和第二个字符串jk这个子段形成的回文串是否存在,因为两个字符串的组合一共有四种方式,所以转移方式有四种: 1.只有第一个字符串且$s1[i]==s1[j], dp[i][j][k 阅读全文
posted @ 2020-10-04 17:08 shuitiangong 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 略 #解题思路 使用两个优先队列,第一个优先队列以v为第一优先级,s为第二优先级从大到小排序,第二个优先队列以s为第一优先级,v为第二优先级从小到大排序。对于第一个优先队列堆顶的一对(v,s)来说,如果s我们选出的所有数的数量小,就不需要他了,因为我们以v的大小为第一优先级,加 阅读全文
posted @ 2020-10-04 09:37 shuitiangong 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 略 #解题思路 n=1e5的数据规模肯定是不能直接枚举两个相连的点的。既然题目中用到了位运算,就要从二进制的角度来考虑。 对于一个连通分量,我们将其中的所有点按照权值排序,这时候再暴力枚举的话,肯定是最大的点和其他点分别来做与运算,然后次大的点和比它小的点做与运算。。。从位运算 阅读全文
posted @ 2020-09-21 17:46 shuitiangong 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 给一个二叉树,第一个点是根,然后优先访问右儿子,然后是左儿子,右儿子的结点编号比父节点小,左儿子的结点编号比父节点大。 #解题思路 从根开始搜索,如果插入的结点比当前结点小,而且右二儿子存在,就访问右儿子,负责插入的点就是右儿子,左儿子也一样。 #代码 const int ma 阅读全文
posted @ 2020-09-21 15:42 shuitiangong 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 略 #解题思路 分别将n个物品放进1~n个盒子里,且不考虑盒子内的顺序,就是最经典的第二类斯特林数。 #代码 const int maxn = 2e3+10; const int maxm = 1e4+10; int s[maxn][maxn]; int main() { s[ 阅读全文
posted @ 2020-09-16 21:41 shuitiangong 阅读(142) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 32 下一页