链接 [https://codeforces.com/contest/557/problem/C] 题意 给你每个木棍的长度,以及移除每个木棍的代价 使得桌子稳定,最长的木棍必须大于剩下的一半 分析 这个数据范围,就是得暴力和前缀和还有一些技巧 枚举每一种长度,大于它的全部移除, 那么剩下的就尽可能 ...
分类:
其他好文 时间:
2019-06-06 00:03:44
阅读次数:
100
特点 树状数组常用于查询前缀和,前缀和通过差分可以得到区间和,并支持单点修改 单点修改和查询前缀和的时间复杂度均为$O(n\log_2 n)$ 数据结构与基本操作 假定有$a_1, a_2, ..., a_n$共n个数,我们使用数组bit[n+1] = {0}, 其中0位置不存储任何信息,仅作为边界 ...
分类:
编程语言 时间:
2019-06-04 13:31:35
阅读次数:
112
就是使用KMP算法进行字符串的匹配,但是我发现我之前的kmp写的有问题,然后修补了一下板子漏洞2333 next数组含义: next[i]表示 到i为止,前缀 和 后缀 相同的个数 1 (为啥 1呢,比如 , ,这样的话,aabaab不是的话 就直接失配到aab,大概意思就是这样) c++ clas ...
分类:
其他好文 时间:
2019-06-03 12:39:51
阅读次数:
84
前缀和序列 所谓前缀和数组,就是从第一个元素到当前元素的和。假设这个前缀和数组为d[],原数组为a[],那么d[ i ] = a[ 1 ]+a[ 2 ]+a[ 3 ]+...+a[ i-1 ]+a[ i ]。在实际应用中,可以直接d[ i ]=d[ i-1 ]+a[ i ]。 它主要用于查询一段区间 ...
分类:
其他好文 时间:
2019-06-01 23:29:12
阅读次数:
247
"原题传送门" 看见一段的异或和不难想到要做异或前缀和$s$ 我们便将问题转化成:给定$n$个数,求异或值最靠前的$k$对之和 我们珂以建一个可持久化01trie,这样我们就珂以求出每个值$s[a]$与之前所有的值异或值最大的值$b$是多少,把这些所有$(b,a)$塞进一个堆中 每次从堆顶取元素,设 ...
分类:
其他好文 时间:
2019-05-31 23:44:16
阅读次数:
131
要求每段的点数都一样,因此分的段数cnt肯定是n的因子,要求每段都有山峰,因此cnt肯定小于等于山峰数量。分段的宽度d=n/cnt,对山峰数量做一个前缀和,检查一下每一段的山峰数量是否没有增加即可。 ...
分类:
其他好文 时间:
2019-05-30 01:20:31
阅读次数:
144
链接:https://nanti.jisuanke.com/t/39277 思路: 一开始看着很像树分治,就用树分治写了下,发现因为异或操作的特殊性,我们是可以优化树分治中的容斥操作的,不合理的情况只有当两点在一条链上才存在,那么直接一遍dfs从根节点向下跑途中维护一下前缀和,把所有情况中不合理情况 ...
分类:
其他好文 时间:
2019-05-29 14:31:00
阅读次数:
459
持续更新... 1. 点分治 向下递归的时候两种写法(是否判断当前子节点为上层点分树中的父节点) 都不会锅 : 2. 枚举子集方法有三,暴力不说, 高维前缀和 网上挺多,至于另一种玄学算法总感觉很像 FWT : cpp for(rint i=1;i对于 k=1 : 原式= $(n+1)n\over ...
分类:
其他好文 时间:
2019-05-24 22:26:53
阅读次数:
130
N个整数组成的序列a[1],a[2],a[3],…,a[n],你可以对数组中的一对元素进行交换,并且交换后求a[1]至a[n]的最大子段和,所能得到的结果是所有交换中最大的。当所给的整数均为负数时和为0。 例如:{-2,11,-4,13,-5,-2, 4}将 -4 和 4 交换,{-2,11,4,1 ...
分类:
其他好文 时间:
2019-05-23 21:06:11
阅读次数:
151
这场好有毒啊~进去就被C、E俩结论题关了。 赛后补题发现其实D也很容易构造。 题意是请你构造一个长度在50以内的序列,第一项是a,最后一项是b,序列的每一项都是前缀和再加上$r_{i}$,然后规定$1<=r_{i}<=m$。 显然我们可以发现在$r_{i}$对$x_{j}$的贡献是非常容易计算的 用 ...
分类:
其他好文 时间:
2019-05-19 11:59:38
阅读次数:
165