摘要:
"BZOJ 3238" [Ahoi2013] 差异 | 后缀数组 单调栈 题面 .jpg) 数据范围:$2\le N\le 500000$ 题解 这是一道后缀数组模板题! 在学校停电没Wifi、自己流量又不舍得用的情况的逼迫下,我!终于!会自己背着写后缀数组了! 观察这个式子,发现$len(T_i) 阅读全文
摘要:
首先,$dp[i][j]$表示到$i$行$j$列的方案数,则显然可以写出状态转移方程: $$dp[i][j] = \sum_{k = 1}^{(m + 1) / 2} dp[2 k 1][j 1] + dp[2 k 1][j] + dp[2 k 1][j + 1]$$ 但$2 k 1$这个东西不是很 阅读全文
摘要:
原价100多 200多 300多的LCT!统统20块!非常简单!非常好学!走过路过!不要错过! 阅读全文
摘要:
OI中的莫比乌斯反演 莫比乌斯函数 想要学习莫比乌斯反演,首先要学习 莫比乌斯函数 。 定义 莫比乌斯函数用$\mu(x)$表示。如果$x$是$k$个不同质数的积,则$\mu(x) = ( 1)^k$,否则$\mu(x) = 0$(此时$x$一定是某个或某些平方数的倍数)。$x = 1$时,相当于$ 阅读全文
摘要:
```c++ include include include include using namespace std; typedef long long ll; define enter putchar('\n') define space putchar(' ') template void r 阅读全文
摘要:
```c++ include include include include using namespace std; typedef long long ll; define space putchar(' ') define enter putchar('\n') template void r 阅读全文
摘要:
```c++ include include include include using namespace std; typedef long long ll; define space putchar(' ') define enter putchar('\n') template void r 阅读全文
摘要:
```c++ include include include include using namespace std; typedef long long ll; define space putchar(' ') define enter putchar('\n') template void r 阅读全文
摘要:
"BZOJ 2440" [中山市选2011]完全平方数 | 莫比乌斯函数 题面 找出第k个不是平方数的倍数的数(1不是平方数, $k \le 10^9$)。 题解 首先二分答案,问题就转化成了求$[1, x]$中有多少数不是平方数的倍数,设这个答案为$Q(x)$。 根据容斥原理,$Q(x)$等于: 阅读全文
摘要:
"BZOJ 2226" [Spoj 5971] LCMSum 这道题和 "上一道题" 十分类似。 $$\begin{align } \sum_{i = 1}^{n}\operatorname{LCM}(i, n) &= \sum_{i = 1}^{n}\frac{i \times n}{\opera 阅读全文
摘要:
"BZOJ 2705" [SDOI2012]Longge的问题 给定一个整数N,你需要求出∑gcd(i, N)(1 include include include define space putchar(' ') define enter putchar('\n') using namespace 阅读全文
摘要:
"BZOJ 1257" [CQOI2007]余数之和sum 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余数。例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 阅读全文
摘要:
```c++ include include include include using namespace std; typedef long long ll; define space putchar(' ') define enter putchar('\n') define INF 0x7f 阅读全文
摘要:
"BZOJ 3230" 相似子串 题面 题解 首先我们要知道询问的两个子串的位置。 先正常跑一遍后缀数组并求出height数组。 对于每一个后缀suffix(i),考虑以i开头的子串有多少是之前没有出现过的,也就是考虑左端点在i、右端点在什么范围内时这个子串没有出现过——答案是右端点在[i + he 阅读全文
摘要:
"BZOJ 1031" [JSOI2007]字符加密Cipher | 后缀数组模板题 将字符串复制一遍接在原串后面,然后后缀排序即可。 c++ include include include include define space putchar(' ') define enter putchar 阅读全文
摘要:
题目链接:http://uoj.ac/problem/35 c++ include include include include define enter putchar('\n') define space putchar(' ') using namespace std; typedef lo 阅读全文
摘要:
"BZOJ 3190" 赛车 题面 这里有一辆赛车比赛正在进行,赛场上一共有N辆车,分别称为个g1,g2……gn。赛道是一条无限长的直线。最初,gi位于距离起跑线前进ki的位置。比赛开始后,车辆gi将会以vi单位每秒的恒定速度行驶。在这个比赛过程中,如果一辆赛车曾经处于领跑位置的话(即没有其他的赛车 阅读全文
摘要:
"BZOJ 1007" 水平可见直线 题面 平面直角坐标系上有一些直线,请求出在纵坐标无限大处能看到哪些直线。 题解 将所有直线按照斜率排序(平行的直线只保留最高的直线),维护一个栈,当当前直线与栈顶直线的交点在栈顶两条直线的交点的左边,则弹出栈顶元素。可以画图证明这是正确的(因为我们要维护一个下凸 阅读全文
摘要:
"BZOJ 4753" [Jsoi2016]最佳团体 | 树上背包 分数规划 又是一道卡精度卡得我头皮发麻的题…… 题面(……蜜汁改编版) "YL大哥" 是24OI的大哥,有一天,他想要从$N$个候选人中选$K$个小弟($N, K \le 2500$)。 想要成为大哥的小弟不是件容易事,必须要有一个 阅读全文
摘要:
"BZOJ 4898" [APIO2017] 商旅 | SPFA判负环 分数规划 更清真的题面链接:https://files.cnblogs.com/files/winmt/merchant%28zh_CN%29.pdf 题解 ……APIO2017那天我似乎在……北京一日游…… 【更新】诶?我…… 阅读全文
摘要:
"BZOJ 2527" Meteors 题意 一个圆环上有m个位置,编号为1~m,分别属于n个国家。 有k个时刻,每个时刻都会给圆环上的一个区间中每个位置的值加上一个数。 每个国家有一个目标,问对于每个国家,哪个时刻它拥有的每个位置的数值之和会达到它的目标。 题解 这道题也是一道整体二分题。二分到达 阅读全文
摘要:
"BZOJ 3110" K大数查询 题面 有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。 题解 这道题一个好写的做法是“整体二分”。 我做的上一道整 阅读全文
摘要:
“高级”数据结构——树状数组! ※本文一切代码未经编译,不保证正确性,如发现问题,欢迎指正! 1. 单点修改 + 区间查询 最简单的树状数组就是这样的: c++ void add(int p, int x){ //给位置p增加x while(p include include include inc 阅读全文
摘要:
"BZOJ 3527" 力 | 分治 题意 给出数组q,$E_i = \sum_{i j} \frac{q_iq_j}{(i j) ^ 2} $。 题解 求出减号前面一部分(设为A(i)),再求出减号后面的一部分(设为B(i))。 具体怎么求呢?还是转换成多项式乘法。 设$f(i) = q[i]$, 阅读全文
摘要:
"BZOJ 2194" 快速傅立叶变换之二 题意 给出两个长为$n$的数组$a$和$b$,$c_k = \sum_{i = k}^{n 1} a[i] b[i k]$。 题解 我们要把这个式子转换成多项式乘法的形式。 一个标准的多项式乘法是这样的: $$c_k = \sum_{i = 0}^{k} 阅读全文
摘要:
小学生都能看懂的FFT!!! 前言 在创新实践中心偷偷看了一天FFT资料后,我终于看懂了一点。为了给大家提供一份简单易懂的学习资料,同时也方便自己以后复习,我决定动手写这份学习笔记。 食用指南: 本篇受众:如标题所示,另外也面向同我一样高中起步且非常菜的OIer。真正的dalao请无视。 本篇目标: 阅读全文
摘要:
"BZOJ 1499" 瑰丽华尔兹 | 单调队列优化DP 题意 有一块$n \times m$的矩形地面,上面有一些障碍(用' '表示),其余的是空地(用'.'表示)。每时每刻,地面都会向某个方向倾斜,但不同时刻倾斜方向可能不同:具体来说,当时间处于区间$[l_i, r_i]$内时,向$d_i$方向 阅读全文
摘要:
是的,这次的纪念帖也比较磕碜…… 但是还有更磕碜的↓↓↓ 2017年6月7日,我在我的旧博客发了个bzoj10题纪念…… 那时我还是一个又young又simple的菜鸡(现在可能也是……),省选之后觉得自己真是太菜了(什么样的菜鸡才会第一天才得20分啊!),看到学长的博客,就想刷著名的省选题库——b 阅读全文
摘要:
"BZOJ 2588" Count on a tree 题面 求树上两点之间路径上第k大的点权。 题解 一开始看到这道题觉得是树剖,然后又听说是主席树,然后以为是主席树+树剖,差点没吓死…… 然后发现,如果每个点都挂一棵主席树,每棵都通过修改父亲的主席树得到,这样当询问路径(u, v)时,u的主席树 阅读全文
摘要:
"BZOJ 3524" Couriers 题意 求一个区间内出现超过区间长度的一半的数,如果没有则输出0。 题解 我可能太菜了吧……这道题愣是没想出来…… 维护权值主席树,记录每个数都出现过多少次; 查询的时候,这个数要么在较小的那一部分,要么在较大的那一部分;如果两部分的数的总数都不大于一开始那个 阅读全文
摘要:
"BZOJ 1014" 火星人 题意 有一个字符串,三中操作:在某位置后面插入一个字符、修改某位置的字符、询问两个后缀的最长公共前缀。 题解 看到网上的dalao们都说这道题是平衡树,我就很懵x……平衡树维护什么啊? 最后发现某个节点维护的是它所代表的区间的哈希值——显然这个哈希值可以从左右子树的哈 阅读全文
摘要:
"BZOJ 1208" 宠物收养所 我犯过的错误:删除一个节点后没有update新的根节点,导致size错了! c++ include include include include define space putchar(' ') define enter putchar('\n') using 阅读全文
摘要:
"BZOJ 2337" XOR和路径 题解 这道题和 "游走" 那道题很像,但又不是完全相同。 因为异或,所以我们考虑拆位,分别考虑每一位; 设x[u]是从点u 出发 、到达点n时这一位异或和是1的概率。 对于所有这一位是1的边,若一个端点是u、另一个是v,则x[u] += (1 x[v]) / d 阅读全文
摘要:
啊 我永远喜欢期望题 阅读全文
摘要:
题意 给出$n$维直角坐标系中$n + 1$个点的坐标,它们都在一个$n$维球面上,求球心坐标。 题解 设球面上某两个点坐标为$(a_1, a_2, ... a_n)$和$(b_1, b_2, ... b_n)$,则可以列出方程: $$(x_1 a_1)^2 + (x_2 a_2)^2 + ... 阅读全文
摘要:
"BZOJ 2738" “矩阵乘法”(子矩阵第k大) 题意 给出一个矩阵,多次询问子矩阵中第k大的数是多少。 题解 我做这道题之前先照着这道题出了一道题,是这道题的一维版本,在这里: "https://vijos.org/d/contest/p/5a26541bd3d8a11cef1706aa" 。 阅读全文
摘要:
少年,想学带修改主席树吗 | BZOJ1901 带修改区间第k小 有一道题( "BZOJ 1901" )是这样的:n个数,m个询问,询问有两种:修改某个数/询问区间第k小。 不带修改的区间第k小用主席树很好写,不会的同学可以看一下 "这个" 。 加上修改怎么做呢?我们可以用数学老师成天讲的类比思想: 阅读全文
摘要:
我我我我看错题了 把速度看成单位路程的时间了 GG 阅读全文
摘要:
"BZOJ 3223" 文艺平衡树 题意 一个 1~n 的序列,有m次询问,每次询问翻转其中的一个区间。输出最后的区间。 题解 这是一棵加lazy的平衡树…… 首先,翻转区间可以通过区间内所有节点的左右儿子实现。显然我们不能暴力处理所有的点,所以我们要打lazy标记。 既然要打lazy,首先要区间内 阅读全文
摘要:
```c++ #include #include #include #include #define space putchar(' ') #define enter putchar('\n') using namespace std; typedef long long ll; template void read(T &x){ char c; bool op = 0;... 阅读全文