上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 32 下一页
摘要: 异或最值问题是Trie的拿手强项 看到异或应该先想Trie和前缀和 给定一个树,树上的边都具有权值。 树中一条路径的异或长度被定义为路径上所有边的权值的异或和: ⊕ 为异或符号。 给定上述的具有n个节点的树,你能找到异或长度最大的路径吗? 输入格式 第一行包含整数n,表示树的节点数目。 接下来n-1 阅读全文
posted @ 2019-05-05 10:49 张浦 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 算法竞赛中的哈希是往往是种种概率/玄学但是又贼鸡儿快方便的神奇算法 本质是通过对目标数据建立唯一映射进行缩小数据规模的权值判断, 常常可以乱搞一些题目 对循环数组的hash https://www.acwing.com/problem/content/139/ 解题思路: 对每个六元组求最小表示, 阅读全文
posted @ 2019-05-05 10:49 张浦 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目: 给n个数, 你需要找两个数使得LCM最小, 将两个数的位置输出 解题思路: 题目时间给了四秒, 数据范围 1e7 所以暴力是可以过的 尝试使用枚举范围内所有 gcd 解决问题 对于每个gcd x 有任意 gcd(n * x, m * x) = x 用 O nsqrt(n) 的筛法可以枚举出当 阅读全文
posted @ 2019-05-05 10:49 张浦 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 最近公共祖先求法很多, 各有优略 LCA步骤及原理: 例题: http://acm.hdu.edu.cn/showproblem.php?pid=2586 代码: LCA倍增法 DFS + 向前星版 预处理DEG 为log2(n) + 1 #include <bits/stdc++.h> typed 阅读全文
posted @ 2019-05-05 10:47 张浦 阅读(93) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/1155/D 基础的线性dp 先导知识点:最大子段和 dp[i] = max(dp[i - 1] + arr[i] , 0) dp[0]转移最大子段和 dp[1]转移dp[0]正在乘val的最大子段和 dp[2]转移d 阅读全文
posted @ 2019-05-01 08:35 张浦 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 拓扑序列有很多用途, 比如判环, 将树上 / 图上的问题转化为序列上的问题再处理等等 寻找过程就是不断找入度为0的点添加到Q尾部 如果得到的拓扑序列长度不等于N 则说明有环 void toposort(int n) { queue <int> Q; for(int i = 0; i < n; ++i 阅读全文
posted @ 2019-04-25 19:24 张浦 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 原理:一个数的倍数肯定不是素数 若给定子区间[fst, lst] 则必有区间内任意数最大的因子是sqrt(lst); 因此只需要将2 - sqrt(lst)中的所有质数的倍数从区间[fst, lst]中划掉即可 剩下的就是区间内的素数 注意两个情况 1. 第一次筛出的素数就在区间里 要特判 2. 将 阅读全文
posted @ 2019-04-25 19:23 张浦 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 此题是一个有条件限制的01背包 解法1: 首先 最大体积肯定是 其次 易得大于体积 t 的状态只能由小于 t 的状态转移而来 解法2: 最大答案肯定是 t 体积以内的最大非 t 体积 + max val[i] 所以对物品排序, 用t体积背前n - 1个物品, 然后加上max val[i] int m 阅读全文
posted @ 2019-04-21 18:45 张浦 阅读(80) 评论(0) 推荐(0) 编辑
摘要: CCPC省赛的时候和队友讨论了多值同时贪心怎么最优, 没整出来, 今天就碰到这种题了。。。 私以为贪心不是特别容易凭空构造出一种严谨/正确的贪心方案 我这种铁牌选手只能多看多学吧,没什么别的方法 题目: 给定N个二元组(a1,b1),(a2,b2),…,(aN,bN),请你从中选出恰好K个,使得ai 阅读全文
posted @ 2019-04-14 19:04 张浦 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 树状数组 树状数组又是一个区间查询修改利器 前缀和的维护 差分的维护 又强又方便 二进制组合原理 struct bit { ll c[MAXN], N; //c树, N数组长 bit() {} bit(int n) { N = n; fill(c, c + N + 1, 0); } //初始化数组长 阅读全文
posted @ 2019-04-14 18:53 张浦 阅读(102) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 32 下一页