01 2019 档案

摘要:"嘟嘟嘟" 因为一些知道的人所知道的,不知道的人所不知道的原因,我来~~改~~写今年的NOIP了。 现在看这题,心中满是疑问:我当时是多么的zz,这种水题为啥没做出来…… 不管了,说正事。 先考虑部分分。 1.$n \leqslant 15$ 不会。 2.$m = 1$ 带权树的直径啊。树形dp一下 阅读全文
posted @ 2019-01-31 21:29 mrclr 阅读(570) 评论(0) 推荐(0)
摘要:嘟嘟嘟 题目有点坑,要你求的多少大阵指的是召唤kkk的大阵数 * lzn的大阵数,不是相加。 看到这个限制条件,显然要用生成函数推一推。 比如第一个条件“金神石的块数必须是6的倍数”,就是$1 +x ^ 6 + x ^ {12} + \ldots$,也就是$\frac{1 - x ^ {6n}}{1 阅读全文
posted @ 2019-01-27 10:48 mrclr 阅读(354) 评论(0) 推荐(0)
摘要:最近在外面集训,生成函数这东西被提了好多次,于是我就觉得这东西应该挺重要的,最好学一下。 但是现在我只会写一些入门题。 啊对了,这有几篇不错的博客: 1.生成函数(母函数)——目前最全的讲解 2.组合数学之三 —— 生成函数 3.兔哥的趣谈生成函数 =v= 那么就先看第一道题吧。 HDU1028 像 阅读全文
posted @ 2019-01-26 15:45 mrclr 阅读(547) 评论(0) 推荐(0)
摘要:嘟嘟嘟 这题大家应该都做过,就是暴力dp+单调队列优化。 dp方程其实很好想,最初是这样的:dp[t][i][j]表示时刻$t$后,走到$(i, j)$格子的最远路程,于是就有: \(dp[t][i][j] = max\{ dp[t - 1][px][py] \} + 1\) 但这是$O(Tn ^ 阅读全文
posted @ 2019-01-23 16:16 mrclr 阅读(291) 评论(0) 推荐(0)
摘要:嘟嘟嘟 看数据范围,就能想到折半搜索。 但怎么搜,必须得想清楚了。 假设金币总数为1000,有20个人,首先搜前10个人,把答案记下来。然后如果在后十个人中搜到了4个人,价值为120,那么我们应该在记录的答案中的6个人中找价值最接近380的。 luogu的第一篇题解写的特别好,没有用set,而是以人 阅读全文
posted @ 2019-01-23 09:41 mrclr 阅读(192) 评论(0) 推荐(0)
摘要:嘟嘟嘟 最近复习复习平衡树,然后又体会到了那种感觉:“写代码半小时,debug一下午”。 这题其实就是让你搞一个数据结构,支持一下操作: 1.区间翻转。 2.查询区间最小值所在位置。 刚开始我想错了,想直接维护点权最小的点所在位置,但是这样旋转的时候就彻底的乱了,不知咋维护。 后来有一个不错的主意: 阅读全文
posted @ 2019-01-22 20:14 mrclr 阅读(197) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 这道题dp虽然不难,但是我还是没推出来,感觉最近脑子不太好用啊。 于是就跑去问神仙gjx(全国前三!)了。(外出集训真是好) 神仙不愧是神仙,一会儿就想出来了,而且方法还比网上的题解好懂。 dp[i][j]表示用值域为[1, i]的数,凑出的所有合法序列的值的和。 然后规定序列必须是严格 阅读全文
posted @ 2019-01-21 20:44 mrclr 阅读(284) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 既然让求前$k$优解,那么就多加一维,$dp[j][k]$表示体积为$j$的第$k$优解是啥($i$一维已经优化掉了)。 考虑原来的转移方程:dp[j] = max(dp[j], dp[j c[i]] + v[i])。 现在多了一维,那么dp‘[j][k]就分别从dp[j][]和dp[j 阅读全文
posted @ 2019-01-21 15:13 mrclr 阅读(121) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 题面挺迷的,拿第一个样例说一下: 放第一次亵渎,对答案产生了$\sum_{i = 1} ^ {10} i ^ {m + 1} 5 ^ {m + 1}$的贡献,第二次亵渎产生了$\sum_{i = 1} ^ {5} i ^ {m + 1}$的贡献。 反正我们的主要目标就是求$f(n) = 阅读全文
posted @ 2019-01-21 14:42 mrclr 阅读(305) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 本来以为拉格朗日插值是一个很复杂的东西,今天学了一下才知道就是一个公式…… 我们都知道$n$个点$(x_i, y_i)$可以确定唯一一个最高次为$n 1$的多项式,那么现在我们已知这$n$个点,求这个多项式代入$k$时的值。 首先都能想到用高斯消元$O(n ^3)$求出多项式,然后代入$ 阅读全文
posted @ 2019-01-19 21:16 mrclr 阅读(144) 评论(0) 推荐(0)
摘要:嘟嘟嘟 k-d tree板儿题。 建完树后对每一个点求一遍最小和最大曼哈顿距离,是曼哈顿,不是欧几里得。 #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #includ 阅读全文
posted @ 2019-01-17 17:52 mrclr 阅读(252) 评论(0) 推荐(0)
摘要:嘟嘟嘟 做过[国家集训队]JZPFAR这道题的话,这题就不难了。 我们维护一个长度为$k$的小根堆,在加入第$i$个点之前,用$[1, i - 1]$这些点离点$i$的距离更新答案。这样也能保证每一对点之间的距离一定只算了一次。 #include<cstdio> #include<iostream> 阅读全文
posted @ 2019-01-17 17:10 mrclr 阅读(182) 评论(0) 推荐(0)
摘要:嘟嘟嘟 这题强制在线,只能用k-d tree了,否则可以用cdq分治。 刚开始我想仿照二维线段树的做法,只不过每一层把一个矩形沿一维切一刀。这样的话复杂度是$O(mlog ^ 2 n)$的,还是能过。刚想写发现内存只有20M,这不gg了。 最后还是看了题解。 题解果然跟我不一样,最大的区别是查询的时 阅读全文
posted @ 2019-01-16 15:02 mrclr 阅读(161) 评论(0) 推荐(0)
摘要:嘟嘟嘟 k-d tree模板之二:查询第k大距离。(所以是怎么上黑的) 因为k-d tree的查询就是暴力嘛,所以我就想到了一个很暴力的做法:每一次查询用一个长度为k的优先队列维护。按距离递增,编号递减的方式排序。 然后查询的时候,如果队列长度大于k了,就尝试用当前节点更新队首。 刚开始没看到k的范 阅读全文
posted @ 2019-01-15 10:42 mrclr 阅读(324) 评论(0) 推荐(0)
摘要:嘟嘟嘟 题意:给定$n$个二维平面上的点$(x_i, y_i)$,求离每一个点最近的点得距离的平方。(\(n \leqslant 1e5\)) 这就是k-d tree入门题了。 k-d tree这东西跟平衡树有点像,但却不一样,而且查询的最坏复杂度是$O(\sqrt)$的。 首先推荐两篇博客: K- 阅读全文
posted @ 2019-01-15 09:13 mrclr 阅读(351) 评论(0) 推荐(0)
摘要:嘟嘟嘟 求无向图的最大独立集。 有这么一回事:最大独立集=补图的最大团。 所谓的最大团,就是一个子图,满足图中任意两点都有边。 然后ssy巨佬告诉了我一个很没有道理强的做法:随机。 每一次random_shuffle储存节点的数组,然后从头开始扫每一个点,能加入最大团就加入,否则continue。 阅读全文
posted @ 2019-01-14 10:36 mrclr 阅读(125) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 这题我读了两遍才懂,然后感觉要解什么高次同余方程……然后我又仔细的看了看题,发现只要求得$p$和$q$就能求出$r$,继而用exgcd求出$d$,最后用快速幂求出$n$。 再看看这个数据范围,用Pollard Rho最适合不过了。 阅读全文
posted @ 2019-01-12 17:11 mrclr 阅读(222) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 从标题中能看出来,我只是想贴一个代码。 先扯一会儿。 前几天模拟考到了这东西,今天有空就学了一下。 到网上找资料,发现前置技能是miller rabin筛法,于是我还得先学这么个东西。 学miller rabin的话不得不推荐这两篇文章: "大数质因解:浅谈Miller Rabin和Po 阅读全文
posted @ 2019-01-12 15:27 mrclr 阅读(469) 评论(0) 推荐(1)
摘要:嘟嘟嘟 题中说选的数的编号亦或和不能为0,也就是在这个集合中,不能用不同的选取方案亦或出相同的值。由此联想到线性基的一个性质是,每一个数都能由线性基中特定的一些数亦或得到。 所以我们就是要求出这些数的线性基,并且满足所选的数的魔力值的和最大。 本来以为是dp,结果按魔力值排个序贪心就过了。 证明在网 阅读全文
posted @ 2019-01-11 16:06 mrclr 阅读(198) 评论(0) 推荐(0)
摘要:嘟嘟嘟(洛谷) 这道题算是利用了线性基的一个性质:对于大小为$k$的线性基中亦或出来的一个数$x$,那么用原数组的数亦或出来的所有数中,$x$出现了$2 ^ {n - k}$次。 那么就可以算出线性基中比$x$小的数有多少个(记为$cnt$),然后答案就是$cnt * 2 ^ {n - k} + 1 阅读全文
posted @ 2019-01-11 15:27 mrclr 阅读(125) 评论(0) 推荐(0)
摘要:嘟嘟嘟 不愧是WC的题,思维真的很妙(虽然代码特别简单)。 首先暴力找出所有路径肯定不行。 题中说可以经过重复的边,并且边权也会被计算多次。那么就是说,如果经过一条边再沿这条边回来,这条边的贡献就是0了。但是我们可以通过这条边到达别的路径上。更准确说,是到一个环上。 于是就有这么一个做法:先找出所有 阅读全文
posted @ 2019-01-11 14:01 mrclr 阅读(156) 评论(0) 推荐(0)
摘要:嘟嘟嘟 首先都知道这题得用线性基。 然后预处理出线性基的倍增数组,查询的时候找lca的同时维护路径的线性基数组。 倍增lca复杂度$O(logn)$,合并线性基$O(log ^ 2 n)$,所以总复杂度$O(n log ^ 3 n)$。 注意的是,查询的时候如果一步都跳不了,$x$和$y$所在点的权 阅读全文
posted @ 2019-01-11 10:46 mrclr 阅读(199) 评论(0) 推荐(0)
摘要:嘟嘟嘟 集训的时候发现自己不会线性基,就打算学一下。 这东西学了挺长时间,其实不是因为难,而是天天上午考试,下午讲题,结果晚上就开始颓了。 今天总算是有大块的时间好好学了一遍。 这里推荐menci大佬的博客:线性基学习笔记 这道题就是求一个集合的第$k$小亦或和。 首先线性基的概念、构造方法什么的看 阅读全文
posted @ 2019-01-11 09:39 mrclr 阅读(122) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 首先这一眼看出来,要树形dp。 然后发现状态不好设,刚开始我想的是dp[i][j]表示以$i$为根的子树,选了$j$个黑点的最大价值。结果就不会转移了。 转移的时候想考虑$$这一条边的贡献,但是发现这个状态的转移所涉及的不只是这一条边,还有子树中的边,于是就彻底gg了。 还是看了题解。 阅读全文
posted @ 2019-01-02 17:22 mrclr 阅读(176) 评论(0) 推荐(0)