10 2020 档案
摘要:题目戳我 \(\text{Solution:}\) 考虑显然树形$dp$. 1.设$dp[i][j]$表示子树$i$选了$j$个的最小代价。 发现转移时的$cost$没法转移。 2.设$dp[i][j][k]$表示子树$i$选了$k$个,距离$i$最近的伐木场是$j$的最小代价。 不方便处理$i$是
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 题目大意是求,单点修改,\(\sum_{i=1}^n a[i][i\bmod x=y]\) 考虑根号分治:对$x$分类讨论。 当$x\leq \sqrt$时,设$sum[i][j]$表示模$i$为$j$的所有数之和。这一部分可以$O(n\sqrt
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 先考虑前三个操作,用$rev[i]$表示第$i$行是不是被反转,$vis[i][j]\(表示点\)(i,j)$是不是被反转。 若$vis[i][j]\not=rev[i],$意味着$a[i][j]=0.$反之若$vis[i][j]=rev[i],$
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 设$dp[l][r][0/1]\(表示区间\)[l,r]$已经排列好,且这个人是从左边/右边加入进来的。 考虑分别转移: \(dp[l][r][0]=[a_l<a_{l+1}]dp[l+1][r][0]+[a_l<a_r]dp[l+1][r][1]
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 考虑$dp.$ $dp[i][j]$表示前$i$个物品,锅里$j$个的最大值。 则$dp[i][j]=\max\left{dp[i-1][k]+a_i*j\right}$ \(dp[i][j]=\max\left\{dp[i-1][k]+a_i*j
阅读全文
摘要:A 题目大意:给定$a,b,\(求\)\min\left{(x⊕a)+(x⊕b)\right}$ $⊕$是异或。 \(\text{solution:}\) 显然答案应该是$a xor b.$令两个括号其中一者为$0$即可。 #include<bits/stdc++.h> using namespac
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 考虑$dp,$设$dp[i][j]$表示前$i$个物品智商为$j$的情商最大值。 先考虑负数情况,可以整体挪动一个最大值,更改状态为前$i$个物品智商为$j+Mx$的情商最大值。 那么有显然$dp$方程:\(dp[i][j]=\max\left\{
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 这题不要把思想局限到线段树上……这题大意就是求路径经过的值中$x$的出现性问题。 最开始的想法是值域线段树……看了题解发现直接$vector$加二分即可$O(n\log^2 n)$解决。 思路: 用$vector$存下颜色$i$所出现的所有节点,对
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 这题的转化思想很巧妙…… 考虑把$dep$给拆掉。 首先可以明确的是,每一个$LCA$一定在$root\to z$的路径上。 考虑一个$LCA$被选中,意味$root\to LCA$这个路径上所有的值都$+1$. 于是,我们可以把询问看成将点$p\
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 关于分层图: 一般用于处理:给你$k$次机会对边权进行修改的最短路问题。 算法流程: 建立出$k$层图,对应进行$k$次操作后的局面。 不同图之间建立边,即表示从当前局面进行一次操作转移到下一个局面。 由分层对图的边和点较多,所以开空间的时候一定要
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 树上启发式合并,是对普通暴力的一种优化。 考虑本题,最暴力的做法显然是暴力统计每一次的子树,为了避免其他子树影响,每次统计完子树都需要清空其信息。 但是,如果我们先对非$x$的节点进行统计,最后统计$x$然后合并其他节点的信息,那么,$x$的统计信
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 题目很显然可以设$dp[i]$表示$i$的子树内的关键点都不和$i$联通的最小待机,有如下$dp$方程: \(v\in son_u,v\in key:dp[u]+=dis(u,v)\) \(v\in son_u,v\not\in key:dep[u
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 考虑建图。操作可以看作对$1$进行的操作,于是有以下运行过程: $1\to w[i]\to e[i]\to...$ 考虑倍数,一个数可以走到所有是它的倍数的数。于是这样建图: \(w[i]\to e[i],i\to i*j.\) 然后发现倍数的边可
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 考虑第二问,赢的局数最小,即输和平的局数最多。 考虑网络流,$1,2,3$表示$Alice$选择的三种可能性,$4,5,6$同理。 它们像源点和汇点连的是局数为容量的边,然后对于能和它平的和输的连边,边权为$inf$,因为源点和汇点已经限制了流量,
阅读全文
摘要:题目戳我 \(\text{Solution:}\) 若$[l,r]$子段和是$0,$则$sum[r]=sum[l-1].$ 于是我们可以考虑维护当前哪一个前缀和出现过。对于区间$[l,r]$若其子段和为$0$则在$r-1$的地方插入一个$+\infty$即可。 初始化要把$0$赋值为出现过。 #in
阅读全文