摘要: $5.22:$ $AGC014E:$ 每次操作会把点集分为两部分,因此最后一次操作需满足两个点之间两种边都直接相连。所以倒过来考虑,一开始每个点为单独集合,每次把两个有两种边直接相连的集合合并,启发式合并信息。最后判断是否为一个集合。 $5.25:$ $CF773D:$ 每条边减去最小值,观察可知一 阅读全文
posted @ 2017-05-25 17:00 Awner 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给出字符串$S$,求长度小于$k$的子串中,有多少对相等。 解题思路: 其实就是求所有后缀的两两公共前缀与$k$取$min$后的和。我们先用$SA$构出$Height$数组,然后用上升的单调栈维护。如果当前的$Height$小于栈顶,就把栈顶的“清算”,清算多出的那部分,和能够沿伸的长度 阅读全文
posted @ 2016-08-23 21:38 Awner 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 在圆周上有$N$个点,每个点有不同的贡献,要求选$M$个点,不能相邻,问最大的贡献。 解题思路: 将所有点扔进一个按贡献的大根堆里,取$M$次,每次取出堆顶$k$。答案加$V_k$,设$k$的前继为$lst$,后继$nxt$,令$V_k=V_{lst}+V_{nxt}-V_k$,再扔进堆 阅读全文
posted @ 2016-08-22 21:12 Awner 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 题目描述: $F$表示斐波那契数列,给定原始数列,每次操作对$[l,r]$内的数加上$F[i-l+1](l\leq{i}\leq{r})$,或询问区间$[l,r]$的和。 解题思路: 我们发现对于修改操作可以$O(1)$实现。只要用一新数组$D$记录,对于$[l,r]$的修改,将$D[l]+=1,D 阅读全文
posted @ 2016-08-22 20:58 Awner 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给出$h,x,y,z$,求在$h$以内,$x,y,z$可以凑出多少个不同的数。$(1\leq{h}\leq{10^{18}},1\leq{x,y,z}\leq{10^5})$ 解题思路: 直接做显然不好做。我们考虑取$n$个$y$和$m$个$z$,然后再加上$x,2*x,3*x\cdot 阅读全文
posted @ 2016-08-22 20:45 Awner 阅读(580) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 这题改编自CF217E,给出一串字符串,有$n$个操作,将区间$[l,r]$的字符中编号为奇数的写下,再把偶数的写在后面,然后把它们插入$r$和$r+1$之间,问最后字符串的前$k$位。 解题思路: 因为前面的操作不会对后面的操作有影响,所以我们考虑把操作倒过来做。相应的,一开始就只有$ 阅读全文
posted @ 2016-08-22 20:29 Awner 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 这题改编自cf704b,在数轴上有$n$个点,从一个点跳到另一个点的收益是两点的距离和给出的数组对应下标的值,并且往左和往右的数组不同。要求从一个点起跳,经过每个点刚好一次,最后回到原点,使得收益最大。 解题思路: 因为每个点的贡献只跟跳过来的方向有关,与哪个点跳过来无关。所以可以考虑$ 阅读全文
posted @ 2016-08-22 20:16 Awner 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给出整数序列,每次修改其中一个数的值,或给出$x,y$询问 $\sum_{i=1}^{n}(a_i+x)\&y$。 解题思路: 看到位运算,要想到按位做。因为$x\&2^i$的结果随$x$是循环的,有$2^i$个$0$, $2^i$个$2^i$轮流出现。所以我们记录$x\%2^{i+1} 阅读全文
posted @ 2016-08-17 22:57 Awner 阅读(571) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 在数轴上有三个棋子,初始时位置为$x,y,z$,要求用最少的操作步数让位置变成$a,b,c$。每次操作可以任选一颗棋子,以另一个棋子为中轴跳动,跳动后距离不边,且每次只能跳过一颗棋子。 解题思路: 因为有限制,两边只有一颗棋子能跨过中间跳,而中间的棋子就可以往两边跳。如果注意观察的话,会 阅读全文
posted @ 2016-08-17 22:39 Awner 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 在一个$N*M$的矩阵中填入$1\sim N*M$的数,并限制一些位置为周围$9$个格中最小的,而其它位置不能满足这个条件。 解题思路: 考虑$dp$,$F_{i,s}$表示填了前$i$个数,限制位置的填数状态为$s$,$cnt_s$表示限制位置的状态为$s$时,可以填数的位置+限制位置 阅读全文
posted @ 2016-08-16 23:00 Awner 阅读(493) 评论(0) 推荐(0) 编辑