算法竞赛进阶指南刷题
Hacheylight
ZJ OIer
展开
-
0x38 绿豆蛙的归宿(期望,拓扑)
很显然这个题目考期望(废话期望的题目基本都是 dpdpdp 题设 f[x]f[x]f[x] 表示到达节点 xxx 走到终点的路径的期望长度若从 xxx 出发的路径有 kkk 条,分别去 y1,y2,...yky_1,y_2,...y_ky1,y2,...yk,长度分别为 z1,z2,...zkz_1,z_2,...z_kz1,z2,...zk,通过期望的线性性我们可以列出 dpd...原创 2019-02-03 20:00:13 · 227 阅读 · 0 评论 -
0x42 楼兰图腾 (树状数组)
题目还帮你排好序了,太好了其实这个问题就是个裸的逆序对我们知道如何在一个序列中计算每个数后边有多少个数比他小这样,我们就有一种思路倒序扫描 aaa,利用树状数组求出每个 a[i]a[i]a[i] 后边有多少个数比他大记做 right[i]right[i]right[i]正序扫描 aaa,利用树状数组求出每个 a[i]a[i]a[i] 前边有多少个数比他大记做 left[i]left[i]...原创 2019-02-06 21:29:57 · 180 阅读 · 0 评论 -
0x42 Lost Cows (二分+树状数组)
我们应该先由一般的规律推出来如果你要确定某个数字 ppp那么我们就要知道 ppp 的前面有多少个数字比它小,记为 mmmppp的后面有多少个数字比他小,记为nnn那么 ppp 的位置就该在这个数列中的第 m+n+1m+n+1m+n+1 处,我们就二分这个 ppp ,拿每次得到的 midmidmid 来和 m+n+1m+n+1m+n+1 来比较大小,如果 m+n+1>midm...原创 2019-02-07 12:51:04 · 226 阅读 · 0 评论 -
0x43 Can you answer on these queries III(线段树)
好久之前(好像是去年5月)做过的题,居然没做出来就弃疗了,今天才发现问题的本质其实是询问区间最大和用线段树怎么上传?子树上传到根的最大字段分成两种情况:不经过终点,是两段的最大值经过中点经过中点怎么完成?定义:datdatdat 表示区间最大字段和sumsumsum 表示区间和lmaxlmaxlmax 表示区间左端点的最大子段和rmaxrmaxrmax 表示区间右端点的最...原创 2019-02-07 20:46:59 · 210 阅读 · 0 评论 -
0x38 扑克牌 (期望dp)
补锅原创 2019-02-09 13:10:21 · 621 阅读 · 0 评论 -
0x3B 233 Matrix (矩阵快速幂)
一开始我还想通过递推关系找规律呢,后来发现不是很好找,即使找到相应的东西也需要求 10910^9109 个元素的和。想想可以用矩阵快速幂解决,对于这种有着递推关系且数量较大的递推式来说,但始终想不到如何构造矩阵。后来看题解才知道,原来可以一列一列往右推构成递推关系。如果去掉第一行,我们很容易构造矩阵来将第一列推到第二列,而对于 233233233 到 233323332333 这些我们可以∗1...原创 2019-02-09 13:33:51 · 191 阅读 · 0 评论 -
0x38 Rainbow的信号 (期望)
待填坑原创 2019-02-09 13:36:40 · 276 阅读 · 0 评论 -
0x35 Xor (线性基,高斯消元)
首先求出线性基 然后根据类似二进制的原理 观察 111 的个数 然后可以算出我凑出的异或值是第几大的注意 当线性基个数小于 nnn 时会存在 000 所以要将询问第 kkk 小改为询问第 K−1K-1K−1 小然后板子基本就是高斯消元?反正就是用 O(logw)O(log w)O(logw) 级别的数,代替了原来的 nnn 个数。在什么意义上这两个东西相等呢?就是这 logwlog wlog...原创 2019-02-09 13:50:39 · 278 阅读 · 0 评论 -
0x44 磁力块 (分块+BFS)
很容易想到的一个思路就是首先按照距离起点的距离进行排序。用一个队列存储我们得到的石头。我们可以在 O(logn)O(logn)O(logn) 的时间内,找到所有距离小于手上石头,但是我们发现,我们还要考虑质量和磁力之间的关系,但是质量并没有排序。我们自然而然的就想到了将整个序列分为若干小段,序列整体按照距离排序,方便距离的查找,但是小区间内部按照质量排序,方便找到对应距离后的质量的查找。这就是...原创 2019-02-09 15:04:12 · 496 阅读 · 0 评论 -
0x43 Interval GCD (线段树+树状数组+GCD)
数据结构好题原创 2019-02-09 16:37:33 · 220 阅读 · 0 评论 -
0x41 Parity Game (并查集)
啊哈,这个题有点意思首先我们能够通过前缀和的方式把奇偶性转换一下:如果 S[l...r]S[l...r]S[l...r] 有偶数个111, 那么 sum[l−1]sum[l-1]sum[l−1] 与 sum[r]sum[r]sum[r] 奇偶性相同如果 S[l...r]S[l...r]S[l...r] 有奇数个111, 那么 sum[l−1]sum[l-1]sum[l−1] 与 sum[r]...原创 2019-02-05 20:34:36 · 244 阅读 · 0 评论 -
0x41 [NOI2002] 银河英雄传说 (并查集)
都是些原来做过的题,发现是Pascal代码不敢放就再打了一遍水直接记录一下每个元素的头在哪里用并查集维护就行了#include <map>#include <set>#include <ctime>#include <queue>#include <stack&gt原创 2019-02-05 16:57:53 · 259 阅读 · 0 评论 -
0x41 [NOI2010] 程序自动分析 (并查集)
NOI大水题, 直接并查集维护是否相等就行了注意要先处理等于再处理不等数组稍微开大一些哦对还有离散化#include <map>#include <set>#include <ctime>#include <queue>#include <stack>#i原创 2019-02-05 15:55:44 · 376 阅读 · 0 评论 -
0x3A Cutting Game (博弈论,SG函数)
这是一道经典的SG函数题目首先定义mex(S)mex(S)mex(S)表示不属于集合SSS的最小非负整数SG(x)SG(x)SG(x)的定义为mex{SG(y1),SG(y2),SG(y3),....SG(yk)}mex\{SG(y_1),SG(y_2),SG(y_3),....SG(y_k)\}mex{SG(y1),SG(y2),SG(y3),....SG(yk)},其中y1...y...原创 2019-02-03 10:12:35 · 323 阅读 · 0 评论 -
0x35 开关问题 (高斯消元)
设 xix_ixi 表示第 iii 个开关的操作情况,xi=1x_i=1xi=1 表示按下这个开关, xi=0x_i=0xi=0 表示没有按再统计 ai,ja_{i,j}ai,j 表示第 iii 个开关的第 jjj 个开关的联系情况, ai,ja_{i,j}ai,j 表示按下 jjj 会影响 iii 的状态,反之亦然,特别的令 ai,i=1a_{i,i}=1ai,i=1设开关当前状...原创 2019-02-03 20:29:30 · 474 阅读 · 0 评论 -
0x3B 矩阵幂求和 (矩阵快速幂+分治)
一看题目就一脸懵逼,蛤,这不是要做k次矩阵乘法。。。稳稳地TLE一位叫hzk_cpp的神仙这题直接等比数列+矩阵求逆就能过了,我表示我不会矩阵求逆。。。(本来要学的,结果咕了)然后问教练,教练推荐我看Matrix67里面有这道题的题解,emm发个地址吧wow真的好巧妙...原创 2019-02-03 20:56:18 · 556 阅读 · 0 评论 -
0x3B 守卫者的挑战 (概率dp)
蛤很明显题目都是叫你去求概率了 /cy这个问题特别像背包于是我们能够列出一个 dpdpdp 状态:dp[i][j][k]dp[i][j][k]dp[i][j][k] 表示前 iii 个回合赢了 jjj 次背包空间还剩下 kkk 的概率显然分成赢了和输了两种情况:赢了: dp[i+1][j+1][k+a[i+1]]+=dp[i][j][k]∗p[i+1]dp[i+1][j+1][k+a[i...原创 2019-02-04 10:41:24 · 284 阅读 · 0 评论 -
0x3B [SDOI2016]排列计数 (组合数+错位排列)
SDOI竟有如此水题!这不是一眼题么,先从n个数中选出m个其他的数错位排列统计一下就搞定了错位排列公式:f[1]=0,f[2]=1f[i]=(i-1)*(f[i-1]+f[i-2])原创 2019-02-04 09:52:13 · 449 阅读 · 0 评论 -
0x3B Georgia and Bob (Nim游戏)
这道题上来硬想肯定什么都想不出来。我们只能通过由浅入深的推理才能做出这道题。首先我们考虑必败状态的定义:对于某两个棋子,如果他们两个靠在了一起,那么它们对应的状态就是一个必败状态。这一点很显然,如果两个棋子贴在一起,先手只能移动前面的棋子,而后手可以通过紧跟先手来继续使先手拿到必败状态。那么这样,命题得证,这两个紧贴的石子就是一个必败状态了。那么我们考虑它是从哪里转移而来的:两个棋子如...原创 2019-02-04 14:56:36 · 188 阅读 · 0 评论 -
0x34 石头游戏 (构造矩阵)
题意:给出一个方格阵,初始每个格子中都没有石头,然后每个格子都有一个操作序列,并且每时刻执行一个,循环执行,序列长度小于等于6,问T时刻后石头个数最多的格子中有几个石头。因为操作序列长度小于等于6,所以每60次操作必有一次循环,所以可以对60次操作建一个矩阵,由60次操作相乘,矩阵的长宽均为方格矩阵的元素总数,操作均可以用矩阵中的数字来表示,其中0号点用来表示所有石头的源头,然后矩阵快速幂即可...原创 2019-02-04 15:44:18 · 325 阅读 · 0 评论 -
0x3B Dropping test (01分数规划)
经典模板题,要求留下 n−kn-kn−k 个 二元组 (a,b)(a,b)(a,b), 使得 ∑i=1n−kai∑i=1n−kbi\frac{\sum_{i=1}^{n-k}{a_i}}{\sum_{i=1}^{n-k}{b_i}}∑i=1n−kbi∑i=1n−kai 最大很显然答案具有单调性那么我们直接二分答案对于一个可能的答案 xxx, 怎么判断它是否可行?是不是也很简单,设...原创 2019-02-05 14:26:26 · 257 阅读 · 0 评论 -
0x37 ZAP (Mobius)
看着蓝书就入了 MobiusMobiusMobius 反演的坑了(但是蓝书并没有提到反演二字首先根据基本的数论常识,我们知道 ∑x=1a∑y=1b[gcd(x,y)=k]\sum\limits_{x=1}^a\sum\limits_{y=1}^b[\gcd(x,y)=k]x=1∑ay=1∑b[gcd(x,y)=k] 等价于 ∑x=1ak∑y=1bk[gcd(x,y)=1]\sum\lim...原创 2019-02-05 13:32:19 · 206 阅读 · 2 评论 -
0x44 [Violet]蒲公英(分块)
这是一个处理区间众数的经典题原创 2019-02-09 20:08:56 · 254 阅读 · 0 评论