摘要:
题目 传送门 思路 我们将乘法转换成幂的加法即可 注意指数取模是取模$\phi(1e9+7)$ 其实就是$1e9+6$ 代码 #include<iostream> #include<cstring> using namespace std; const int mod=1e9+6; long lon 阅读全文
posted @ 2020-08-24 19:42
loney_s
阅读(140)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 如果$b_i$为正,那么能选的一定会选 现在单独考虑$b_i$为负的情况 我们考虑对其进行排序, 设现在的rating为r 先选i \(r>=a_i,r+b_i>=a_j\Rightarrow r>=max(a_i,a_j-b_i)\) 先选j \(r>=a_j,r+b_j>=a 阅读全文
posted @ 2020-08-24 19:39
loney_s
阅读(128)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 考虑直接一大堆一大堆的选 最后剩一些小的单独做背包 代码 #include<iostream> using namespace std; long long w; long long ans; long long cnt[10]; void dfs(long long dep,l 阅读全文
posted @ 2020-08-24 19:25
loney_s
阅读(101)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 因为要确定砝码的重量,所以一定是确定一堆重量相同的砝码的重量 考虑$dp[i]$表示总重量为i的方案总数,之后重量相同的用组合数来算,看是否相等 当然有一种特殊情况,只有两种重量, 代码 #include<iostream> using namespace std; const 阅读全文
posted @ 2020-08-24 19:17
loney_s
阅读(170)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 考虑如果末尾是0,那么一定是一个2和一个5组合起来 之后就是背包的板子了 这里有一个小优化,第二位考虑5的数量而不是2的数量 代码 #include<iostream> #include<cstring> using namespace std; int dp[2][205][5 阅读全文
posted @ 2020-08-24 19:10
loney_s
阅读(106)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 快速幂优化板子题QWQ 代码 #include<iostream> #include<cstring> using namespace std; const int mod=1e9+7; long long n,m; struct mat { int n,m; long long 阅读全文
posted @ 2020-08-24 16:52
loney_s
阅读(144)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 我们注意到每个数的状态实际上之和上一个幸运数字的位置相关 也就是指我们只需要枚举当前位置是不是幸运数字即可 计数的问题用数位DP解决就可以了 考虑$dp_{i,j}$第i位,上一个幸运数字的位置是在j 代码 #include<iostream> #include<cstring> 阅读全文
posted @ 2020-08-24 16:47
loney_s
阅读(132)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 注意到异或也可以理解成为二进制下不进位的加法 容斥之后直接数位DP即可 代码 #include<iostream> #include<cstring> using namespace std; int t; int l,r; int limitx[100],limity[100] 阅读全文
posted @ 2020-08-24 16:42
loney_s
阅读(114)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 很明显有单调性 之后就是一个数位dp的板子题目 $dp_{i,j}$前i位,还有j个1没有填 代码 #include<iostream> #include<cstring> using namespace std; unsigned long long l=1,r=1e18,mi 阅读全文
posted @ 2020-08-24 16:37
loney_s
阅读(142)
评论(0)
推荐(1)
摘要:
题目 传送门 思路 对于一个区间$l到r$,答案即为 \(\begin{aligned}val_{l,r}=&a*(r-l+1)-max_{i=l}^{r-1}(d_{i+1}-d_i)^2-\sum_{i=l}^rc_i\\=&a*r-a*(l-1)-max_{i=l}^{r-1}(d_{i+1} 阅读全文
posted @ 2020-08-24 16:30
loney_s
阅读(135)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 我们考虑一种贪心策略 如果从u不能一步到达v,那么一定存在一种方案使得u的第一步是达到$u+1到p_u$中最大的一个$p_i$的i位置 也就是指我们可以考虑从后往前扫,$dp_i$表示以i号节点为起始节点的总和 之后考虑i号节点到其他节点都是要多走一步,但是对于$j到a_i$的位 阅读全文
posted @ 2020-08-24 16:13
loney_s
阅读(117)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 我们考虑怎么将转换这个限制 考虑最终的答案一定满足一个式子,对于方案中的任意一个人都满足$l_i<=min{v_i}<=v_i<=max{v_i}<=r_i$ 我们把平面内的每一个点看做$(min{v_i},max{v_i})$ 把其转换成为一个矩阵,矩阵的左下角的左边即为$(l 阅读全文
posted @ 2020-08-24 15:42
loney_s
阅读(95)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 看见区间操作比较容易联想到线段树 考虑怎么对于一个节点进行快速计算 对于叶子节点,存下$f_,f_\(,每一个节点表示\)\sum_f_,\sum_f_$ 考虑对$a_l到a_r$进行加$x$的操作,其实也就相当于他们合起来之后再进行操作,因为$f_i=f_+f_$ 我们将所有的 阅读全文
posted @ 2020-08-24 15:29
loney_s
阅读(75)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 如果固定左端点,算出所有右端点可能的情况,这个用线段树可以很容易的$O(n*log)$的搞定 考虑左端点往右移一次的情况,即删除$a_i$的情况, 对于$a_j>a_i$的情况,$a_i$会把每一个$a_j$的排名垫高1,次数为$n-j+1$,很容易用线段树维护 对于$a_j<a 阅读全文
posted @ 2020-08-24 15:18
loney_s
阅读(132)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 正难则反 考虑有哪些节点没有被任何一条线段所覆盖 离线之后用一种类似于扫描线的做法即可 代码 #include<iostream> #include<algorithm> #include<vector> using namespace std; namespace BIT { 阅读全文
posted @ 2020-08-24 15:08
loney_s
阅读(94)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 考虑暴力,如果我们随便将其分成两块,因为一个序列的所有数要小于另一个序列的所有数,那么有一个序列一定是1~s,时间复杂度$O(n^2)$ 考虑对其进行进一步的优化,我们假设线段树的第i个叶子结点表示第一个序列是1~i的最小值,那么答案就是区间最小值 还是枚举分界的区间,考虑分解的 阅读全文
posted @ 2020-08-24 15:01
loney_s
阅读(92)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 考虑一种类似于差分的方法 控制一个节点,我们实际上是对他的叶子进行区间加减,如果对叶子进行差分处理,那么一个节点实际上能控制$l$和$r+1$号节点, 比较明显的,如果我们要控制所有节点,那么我们一定要覆盖所有的叶子结点,也就是指我们能自由变换任意区间,很显然的,把一个节点看做一 阅读全文
posted @ 2020-08-24 14:39
loney_s
阅读(198)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 把天看做点,把人看做边 那么合法的方案只有两种,一种是奇环树,另一种就是单纯的树 如果是奇环树,那么里面的所有天都是必须选, 单纯的树就只能不选1个节点,很明显,不选天数最大的那个点 整个过程用冰茶姬进行维护即可 代码 #include<iostream> #include<cs 阅读全文
posted @ 2020-08-24 11:51
loney_s
阅读(98)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 考虑到异或的特殊性 将区间转换成两个前缀异或和的异或即可 代码 #include<iostream> #include<cstdio> #include<map> using namespace std; namespace ufs { int fa[400005]; int w 阅读全文
posted @ 2020-08-24 11:42
loney_s
阅读(80)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 如果图连起来是一个二分图,那么二分图的每一个边权是确定的 考虑二分图和二分图之间的边,也就是跨二分图的三元组,很明显,其也是确定的 也就是最终的答案就是$2^$,cnt表示二分图的数量 关于二分图的统计用一个冰茶姬来统计即可 代码 #include<iostream> #incl 阅读全文
posted @ 2020-08-24 11:37
loney_s
阅读(96)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 考虑如果不安全则一定满足式子$a\oplus x=b$,移项之后直接$a\oplus b=x$ 也就是指a和b的状态一定是一样的,即要么都异或,要么都不异或,对其进行冰茶姬的合并 对于同一个x,方案数直接是$2^$,cnt表示冰茶姬数量 对于其他的,即没有点权异或起来为x的x,也 阅读全文
posted @ 2020-08-24 11:26
loney_s
阅读(102)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 跟合并果子类似的思路 代码 #include<iostream> #include<cstdio> #include<queue> using namespace std; namespace ufs { int fa[100005]; long long w[100005]; 阅读全文
posted @ 2020-08-24 11:18
loney_s
阅读(104)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 我们随便找一棵最小生成树 之后将边分成两种:树边和非树边、 如果是非树边很好处理,直接LCA求最大值即可 考虑不是树边的情况, 如果把这条树边切开,有很多边连接两个连通块,我们所需要的知道的是除了这条边另外的所有边的最小值 这些最小值可以用树链剖分暴力维护, 当然也可以将边排序之 阅读全文
posted @ 2020-08-24 11:09
loney_s
阅读(101)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 一个性质,一群节点的lca一定是其中dfn最小的的节点和dfn最大的节点的lca 用线段树维护区间dfn的最大值和最小值即可 代码 #include<iostream> #include<vector> using namespace std; #define pii pair< 阅读全文
posted @ 2020-08-24 10:59
loney_s
阅读(128)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 考虑用一个魔性的方法来做这道题 如果直接用LCA来求,那么两个点之间的距离一定是正确的, 同时如果保证深度正确的前提下,也可以用$dep_u+dep_v-2*dep_$来求, 注意这里是需要保证深度正确,也就是指如果深度不正确,那么求出来也不正确 设深度深的节点为u 改变一条边, 阅读全文
posted @ 2020-08-24 10:53
loney_s
阅读(157)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 考虑用一种类似于2-sat的方法来推 如果i号人选,那么与他相识的猫就不能选,与之相对的,与他相识的猫的主人就必须选,考虑对其连单向边 比较明显的,在同一个强联通分量里面的点的状态是一样的,所以我们只需要看整个图是不是只有一个强联通分量就可以判断可行性,方案就只需要找到没有出度的 阅读全文
posted @ 2020-08-24 10:30
loney_s
阅读(139)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 矩阵的幂总是和图论相关(来自机房巨佬) 考虑其实可以将矩阵看成求k步到某个节点的方案总数 题目中保证$a_{i,i}>0$,其实就是保证可以原地停留 所以只需要保证原图就是一个强连通分量即可 代码 #include<iostream> #include<vector> #incl 阅读全文
posted @ 2020-08-24 10:25
loney_s
阅读(123)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 注意到边的数量很特殊,只比点的数量多了20不到 先建一颗生成树,如果不用多的边,那每两个的之间的距离就可以直接LCA来求 考虑如果多的边有用,设这些多的边的端点的集合为P,那么一定是从起点到P中的某一个元素,再到P中的另一个元素,再到终点,所以对P中的每一个元素进行一次dij, 阅读全文
posted @ 2020-08-24 10:21
loney_s
阅读(117)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 类似于建虚点 注意到题目中的操作区间都是连续的,用线段树来优化建图即可 代码 #include<iostream> #include<cstring> #include<vector> #include<queue> using namespace std; struct nod 阅读全文
posted @ 2020-08-24 10:17
loney_s
阅读(136)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 很明显,对于同一列或同一行中相同的数的权值一定是一样的,用并查集进行缩点即可 之后把大于和小于转换成图上的边,跑拓扑即可 代码 #include<iostream> #include<algorithm> #include<vector> #include<queue> #inc 阅读全文
posted @ 2020-08-24 10:07
loney_s
阅读(66)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 考虑环的一个性质,如果强行断一条边,再跑拓扑,那么对于这条链上一定有$id_u<id_v$,其中v的深度比u大 对于断的那条边的两个节点,一定有$id_u>id_v$ 对于题目本身而言,单调性是显然的 考虑二分一个分界点mid,把边权>=mid的建图,如果满足题意,那么一定是一个 阅读全文
posted @ 2020-08-24 10:00
loney_s
阅读(89)
评论(0)
推荐(0)
摘要:
题目 传送门 思路 有一个比较明显的性质,如果一条路能够被多次经过,那么这条路上的蘑菇一定会被采完,也就是指蘑菇的数量为0 考虑如果判断一条路能否被多次经过,比较容易的就能想到用tarjan来缩点 再者就是一条路上怎么统计一共可以采多少次蘑菇,即计算$\sum_(w-\sum_j)\(,这里的len 阅读全文
posted @ 2020-08-24 09:53
loney_s
阅读(92)
评论(0)
推荐(0)

浙公网安备 33010602011771号