摘要: 考虑一个一个加入限制。 那么先算没有限的情况。 根据乘法分配律,发现答案其实是$[\frac{n(n+1)}{2}]^m$。 也就是$m$个$(1+2+3+...+n)$的积。将第$i$个$(1+2+3+...+n)$记为$sum_i$(当然这只是$sum_i$的初值)。 设目前答案为$ans$。 阅读全文
posted @ 2019-03-15 15:53 xryjr233 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 这种异或和问题一看就是线性基对吧。。。 要维护的是树上两点之间的路径,所以考虑倍增。 发现可以记$p_{i,j}$为$i$到$i$的$2^j$次父亲(不含)的点权构出的线性基。 于是我们需要合并两个线性基,记这个操作为$Merge(p1,p2)$。 则$p_{i,j}=Merge(p_{i,j 1} 阅读全文
posted @ 2019-03-15 15:49 xryjr233 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 首先,我们需要把图上的边像样例的图片一样反着建。 然后我们跑一遍拓扑排序(注意这时候可能有多个入度为0的点),记录每个点的层数(即它的所有父亲的层数最大值+1)。 然后我们将所有点按层数升序排序,依次处理。 对于每个点,能够使它灭绝的,深度最大的点是它所有父亲的$LCA$,记为$f_{i,0}$。 阅读全文
posted @ 2019-03-15 15:47 xryjr233 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 首先我们发现UNKNOWN很好判断,写个并查集就好了。 考虑如何算出同一并查集内任意元素的权值差。 设两点$a,b$,另一点$c$ 则答案$b a=(b c) (a c)$ 发现$c$可以是同一并查集中任意的点。 考虑使用这个并查集的根。 记$f_x$为并查集中$x$的父亲,$d_x$为第$x$个样 阅读全文
posted @ 2019-03-15 15:46 xryjr233 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 发现此题是Anti Nim游戏。 实在太模板了,以至于我不必再写一次。 ~~其实就是懒~~ 之前接触博弈论比较少,以至于这是第一次接触此类问题。 code: cpp include using namespace std; int T,n,t,tg,ans; int main(){ scanf("% 阅读全文
posted @ 2019-03-15 15:37 xryjr233 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 一个结论: 树上任意三点两两之间的LCA必然有两个是相同的。 至于为什么。。。~~找个规律就好了干嘛那么烦,~~暂时没找到好的证明。 可以发现答案必然在这两个LCA之一。 发现只出现一次的那个更优。 大致就是因为如果走到重复的那个LCA,它和不重复的LCA之间的路径被多走了一次。而从后者出发的话路径 阅读全文
posted @ 2019-03-15 15:37 xryjr233 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 考虑枚举山洞数量,问题变为判断一定数量的山洞是否合法。 设山洞数量为$k$,即使得对于任意$i,j$,满足 $C_i+P_ix\equiv C_j+P_jx(mod\ k)$ 的最小正整数解(即两者相遇的最小天数)不存在或大于$min(L_i,L_j)$。 化简方程 $C_i+P_ix\equiv 阅读全文
posted @ 2019-03-15 15:35 xryjr233 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 概况 排名:47/3403 过题数:4 Rating:$\color{green}{+118}$($\color{purple}{1910}$) (上$\color{purple}{紫}$啦!) 题目 A. Sushi for Two AC时间:3min,496分 题解: 每次记录相同的连续长度,和 阅读全文
posted @ 2019-03-15 15:32 xryjr233 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 总算学会了...NOIp2018之前就开始学了...模板一直过不去... 需要先学会Splay。 现在切入正题。 先放模板题链接 LCT的概况 一种数据结构。(废话) 可以均摊$O(logn)$维护一个森林,支持的树上任意路径的查询,两棵树的连接、断开,单点的修改。 LCT的实现基于Splay。 大 阅读全文
posted @ 2019-03-15 15:22 xryjr233 阅读(167) 评论(0) 推荐(0) 编辑
摘要: Luogu模板题 其实并没有想象中那么复杂。 就是一个简单的解方程过程。 众所周知,$n$个不等价的$n$元一次方程可以确定一组解(或者确定方程无解)。 高斯消元就是为了求得这组解。 以一个四元一次方程组 $2x_1+x_2-5x_3+2x_4=12$ \(-2x_1-x_2+x_3+x_4=14\ 阅读全文
posted @ 2019-03-15 15:13 xryjr233 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 设中心点坐标$B=(b_1,b_2,b_3,...,b_n)$,球面上的点的坐标A=$(a_1,a_2,a_3,...,a_n)$ 则 $dist_{A,B}=\sqrt{(a_1 b_1)^2+(a_2 b_2)^2+(a_3 b_3)^2+...+(a_n b_n)^2}$ $(a_1 b_1) 阅读全文
posted @ 2019-03-15 15:07 xryjr233 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 发现这是一道~~DP~~组合数学题。 我们考虑在坐标系里看问题。我们每次将$x$坐标加1,如果这里是$1$就$y$坐标加1,否则减1,就得到了一条起点是$(0,0)$,终点是$(n+m,n m)$的折现。 比如下面两个01串: 我们发现蓝色的折线是合法的,红色不合法,因为红色折线和直线$y= 1$有 阅读全文
posted @ 2019-03-15 15:06 xryjr233 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 首先要看懂 "这个视频" 然后这题已经做完了。 要求半径为$r$的圆上的整点数量,就是求半径为$\sqrt{r^2}$的圆上的整点数量。 设$r=\prod_{i=1}^n p_i^{k_i}(p_i\in Prime)$ 则$r^2=\prod_{i=1}^n p_i^{2k_i}(p_i\in 阅读全文
posted @ 2019-03-15 15:03 xryjr233 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 方便计算,我们将点B放到最右边,所有点向左放,将最左边点的位置标为1。如样例,变为 1 3 21 3 1 2 6 5 而B在26的位置。 设$dp_i$为在点$i$设置车站,之前随便的最小花费;$costs_i$为所有$i$位置之前的人从出发点走到$i$的分数;$pn_i$为$i$位置及$i$位置之 阅读全文
posted @ 2019-03-15 14:32 xryjr233 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 其实NOIp之前就学会了...结果咕到了现在... 我们都知道堆。但是很少有人会手写堆。因为我们有STL,而且手写堆码量不小(据说是吧?没写过)。 而且堆的$Merge$操作又慢又麻烦。 于是就有了可并堆。 ~~即使c++也有自带的可并堆~~ 左偏树就是其中之一。 "Luogu模板题链接" 什么是左 阅读全文
posted @ 2019-03-15 14:29 xryjr233 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 考虑维护每一个点以及它的子树中被派遣的忍者。 对于一个点,我们用类似树形DP的方式自底向上进行,先把它的所有孩子中被派遣的忍者放到一起,如果他们的薪水总和超过$m$,就不停地将其中薪水最大的忍者删除,直到薪水总和小于等于$m$。 找到所有点中领导能力和被派遣忍者数量乘积的最大值即可。 即维护数据结构 阅读全文
posted @ 2019-03-15 14:27 xryjr233 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 斜率优化学会以后好像也不是那么难嘛。。。 以 "BZOJ1911" 为例 "在洛谷上查看" 设$s_i$为前$i$个元素的前缀和,$f_i$为dp数组。 $f_i=max\{f_j+a(s_i s_j)^2+b(s_i s_j)+c\}$ $f_i=max\{f_j+a(s_i^2 2s_is_j+ 阅读全文
posted @ 2019-03-15 14:23 xryjr233 阅读(170) 评论(0) 推荐(0) 编辑
摘要: cf官方题解为数据结构维护贪心,时间复杂度$O(n^2logn)$。 但是这道题用wqs二分可以做到$O(nlog^2n)$。 第一次使用这个算法的时候甚至不知道它叫wqs二分。 有关wqs二分->wqs本人的课件 容易想到此题的$O(nab)$的做法,就是暴力dp。 暴力dp: #include< 阅读全文
posted @ 2019-03-15 08:23 xryjr233 阅读(167) 评论(1) 推荐(0) 编辑