「洛谷 P1631」序列合并

给定两个长度为 nn 的序列 a,ba,b ,定义 ci,j=ai+bjc_{i,j} = a_i+b_j ,输出 ccn×nn\times n 个元素中前 kk

n105n\le10^5

阅读更多

「Comet OJ 58D」菜菜种菜

题目链接

ii 个点,给定 xiiyix_i\le i\le y_i 和权值 aia_i

qq 个询问,回答

ai[LiR  xi<L  yi>R] \sum a_i[L\le i \le R\ \wedge\ x_i < L\ \wedge \ y_i>R]

n,q106n,q\le 10^6

阅读更多

「SDOI 2010」地精部落

我们称一个排列是合法的,当且仅当每一个数都满足这个数比它相邻的数都要大或都要小。

求长度为 NN 的合法排列数量。

阅读更多

「洛谷 P4275」萃香的请柬

给定一个只含 B, L 的字符串序列

定义一次变换为:B 扩展为 BL,L 变成 B,例如 BBLBL -> BLBLBBLB

求经过无数次变换后,i=lr[si=B]\sum_{i=l}^r [s_i=\text{B}] ( lr263)(~l\le r\le 2^{63})

阅读更多

「NOIP 2017」列队

首先感受到这是数据结构题

然后发现你需要用数据结构维护序列,支持

  • 删除第 kk 个数
  • 在末尾加入一个数

考虑用平衡树维护

注意到 n=m=q=3×105n=m=q=3\times 10^5 ,肯定不能把点一个一个开出来,所以一个节点就表示一个区间 [l,r][l, r] ,用 prefix 表示 ll 的编号

发现 FHQ-Treap 可以比较自然地维护 因为我只会写无旋 Treap

新增一种操作 unfold(u, x) ,调用时保证 u->l <= x <= u->r

表示将 uu 分裂成 [l,x1]  [x,x]  [x+1,r][l,x-1]~~[x, x]~~[x+1, r] 三部分,且 [x,x][x,x] 为子树的根

并且保证分裂后 u->l == u->r == x

阅读更多

「NOIP 2017」逛公园

乱七八糟

我好弱啊

这一题只想到递推 DP

又没有想出正解

到现在还是这么菜

NOIP 2019 如何 500+

首先发现 kk 很小,自然地想到 DP

dd 表示最短路

fu,xf_{u, x} 代表从 ssuu 路径长为 du+xd_u + x 的方案数量

阅读更多

「SDOI 2009」HH的项链

称贝壳的种类为颜色

考虑离线做法,将询问按照 rr 升序排序

发现只需要维护每个颜色的目前最右出现位置( r\le r

每个颜色只在最后出现的地方进行统计,显然可以保证最优(因为离线)

举个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
颜色序列为
1 3 1 2 1

扫到 1 (位置)
1 0 0 0 0
扫到 2
1 1 0 0 0
扫到 3
0 1 1 0 0
扫到 4
0 1 1 1 0
扫到 5
0 1 0 1 1

0/1 序列用树状数组维护即可,答案即是 0/1 序列 sum(l,r)sum(l, r)

在线做法,用可持久化线段树即可

阅读更多