上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页
摘要: 题链 dp[x] 表示以 x 为进化终点能取得的最大进化次数; 可以发现 dp[x] 等于 树上x的前缀最大值 +1; 但是不可能递归寻找x的父亲直到根节点,因为会超时; 所以采用重链剖分+线段树维护前缀最大值,复杂度O(nlogn*logn); #include <bits/stdc++.h> u 阅读全文
posted @ 2021-05-18 14:59 棉被sunlie 阅读(141) 评论(0) 推荐(0)
摘要: 题链 #include <bits/stdc++.h> using namespace std; #define LL long long #define ll long long #define ULL unsigned long long #define Pair pair<LL,LL> #de 阅读全文
posted @ 2021-05-18 13:58 棉被sunlie 阅读(48) 评论(0) 推荐(0)
摘要: 题链 学习自大型同性交友网站,这个B 站up主讲的非常好! 终于学会了第一个维护树上问题的方法,我好兴奋啊! #include <bits/stdc++.h> using namespace std; #define LL long long #define ll long long #define 阅读全文
posted @ 2021-05-18 13:20 棉被sunlie 阅读(45) 评论(0) 推荐(0)
摘要: 题链 维护两个数组v1[],v2[],v1[]用于标记,v2[]用于记录v1的后缀和,对于一个询问,如果在字典树上向下查找直到查找不到时,此时答案就是访问到的v1[]的和,如果查找完了,也就是说字典树上还有比询问更长的串,则答案也是访问到的v1[]的和,但是得加上此时的后缀和v2[],因为当前v2[ 阅读全文
posted @ 2021-05-14 20:20 棉被sunlie 阅读(69) 评论(0) 推荐(0)
摘要: 题链 字典树模板题; 总结:字典树数组长度应大于等于所有字符串总和长度,数组最后一维取决于字符集的大小; #include <bits/stdc++.h> using namespace std; #define LL long long #define ll long long #define U 阅读全文
posted @ 2021-05-14 18:17 棉被sunlie 阅读(130) 评论(0) 推荐(0)
摘要: 题链 p[i][j] 表示 mod 为 i,池子为 j 的总和,可以预处理 mod 在 [1,1000] 范围内的答案,O(1)回答每个询问; 如果询问的范围超过了 1000,则暴力跑一边即可; 复杂度顶得住... #include <bits/stdc++.h> using namespace s 阅读全文
posted @ 2021-05-12 20:14 棉被sunlie 阅读(55) 评论(0) 推荐(0)
摘要: 题链 题意在线求区间众数,若有多个输出权值最小的那个; 离线可采用莫队,在线由于区间众数不满足区间可加性(或许我不知道,不会维护),所以采用分块方式来写; 对于数据范围首先离散化,对长度为 n 的数组分为 sqrt(n) 块,预处理出第 i 块到第 j 块的区间众数答案; 预处理出数组每一个不同值的 阅读全文
posted @ 2021-05-12 16:20 棉被sunlie 阅读(72) 评论(0) 推荐(0)
摘要: 题链 OI-wiki 字符串以 1 为开头写的 #include <bits/stdc++.h> using namespace std; #define LL long long #define ll long long #define ULL unsigned long long #define 阅读全文
posted @ 2021-05-12 14:27 棉被sunlie 阅读(60) 评论(0) 推荐(0)
摘要: 题链 dp[u][j]表示 包含u这个节点 不包含u节点父亲 大小为j的连通块方案数; 设v是u的一个子节点,并且递归求解出dp[v][j],递归终点就是dp[v][1] = 1,然后类似背包方法合并dp[u][],dp[v][]; 记cnt[i]表示大小为i的连通块数量; cnt[i]就是dp[ 阅读全文
posted @ 2021-05-11 15:00 棉被sunlie 阅读(104) 评论(0) 推荐(1)
摘要: 题链 dp[u][j]表示u这个节点取j个物品的最大值(包含u点); 设v是u的一个子节点,并且递归求解出dp[v][j],递归终点就是dp[v][1] = val[v](val[v] 表示点v的权值),然后合并u,v; 答案就是dp[0][m+1],从0号点选取m+1个物品的最大值(0号物品val 阅读全文
posted @ 2021-05-11 14:41 棉被sunlie 阅读(60) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页