04 2019 档案
摘要:拓扑序列有很多用途, 比如判环, 将树上 / 图上的问题转化为序列上的问题再处理等等 寻找过程就是不断找入度为0的点添加到Q尾部 如果得到的拓扑序列长度不等于N 则说明有环 void toposort(int n) { queue <int> Q; for(int i = 0; i < n; ++i
阅读全文
摘要:原理:一个数的倍数肯定不是素数 若给定子区间[fst, lst] 则必有区间内任意数最大的因子是sqrt(lst); 因此只需要将2 - sqrt(lst)中的所有质数的倍数从区间[fst, lst]中划掉即可 剩下的就是区间内的素数 注意两个情况 1. 第一次筛出的素数就在区间里 要特判 2. 将
阅读全文
摘要:此题是一个有条件限制的01背包 解法1: 首先 最大体积肯定是 其次 易得大于体积 t 的状态只能由小于 t 的状态转移而来 解法2: 最大答案肯定是 t 体积以内的最大非 t 体积 + max val[i] 所以对物品排序, 用t体积背前n - 1个物品, 然后加上max val[i] int m
阅读全文
摘要:CCPC省赛的时候和队友讨论了多值同时贪心怎么最优, 没整出来, 今天就碰到这种题了。。。 私以为贪心不是特别容易凭空构造出一种严谨/正确的贪心方案 我这种铁牌选手只能多看多学吧,没什么别的方法 题目: 给定N个二元组(a1,b1),(a2,b2),…,(aN,bN),请你从中选出恰好K个,使得ai
阅读全文
摘要:树状数组 树状数组又是一个区间查询修改利器 前缀和的维护 差分的维护 又强又方便 二进制组合原理 struct bit { ll c[MAXN], N; //c树, N数组长 bit() {} bit(int n) { N = n; fill(c, c + N + 1, 0); } //初始化数组长
阅读全文
摘要:题目: 给定一数组, 求一对位置 i, j 且有arr[i] ^ arr[j]值最大, 输出最大值 解法: 暴力求肯定不妥, 所以需要一种快速的存储此前所有数字的数据结构 并通过异或贪心求出最大值 简单推导: 异或, 不进位加法, 同零异一 所以当前位置的最优解即为此前所有数字中, 与当前数二进制位
阅读全文
摘要:基础入门 给定数组 和 数字T, 求最大位置K 满足 sum(1 - k) <= t; 最简单的想法就是 前缀和 + 二分, 每次查询时间复杂度log(n), 对于数列最左端的数据没有必要 这里的倍增可以理解为二分的改良优化版, 设K点为0, P点为1 1. 每次试从当前点K往后加P个数是否小于T
阅读全文
摘要:ST算法是区间倍增保存信息的典型例子 树高log2(n) + 1, 第i行的每个结点保存从原数组当前位之后 (1 << (i - 1)) 的最大值 很容易发现最大值不断传递并符合通式 rmq[i][j] = max(rmq[i - 1][j], rmq[i - 1][j + (1 << (i - 1
阅读全文
摘要:奇数码问题 给定奇数版, 和两种状态A B 问能否有解使板A 变为板 B 例: 1 2 3 0 4 6 7 5 8 1 2 3 4 5 6 7 8 0 解: 将板A, B化为一维向量, 转化为逆序对问题 首先去掉位0 有 1.空格的左右移动不影响整个串的顺序 2.空格的上下移动必有等价与 swap(
阅读全文
摘要:字符串最小表示: 给定一循环字符串,求出位置k使得从k位置开始的字符串字典序最小 解法 : 设双指针i, j 比较 s[i] 与 s[j] 的关系 若s[i] == s[j] 则以i,j开头的两字符的大小关系目前是相同的 直接向后, 找到第一个不同点i,j 若有s[i + k] > s[j + k]
阅读全文
摘要:第一次写总结 啰里啰唆的 希望大佬轻喷 emmm, 因为这是我校(南阳师院)第一次参加天梯赛,所以赛前比较紧张,特别害怕铁,感觉如果铁了特别对不起教练忙前忙后的跑,不过幸好最后拿了一银一铜,不太满意但是也还能接受。 比赛当天早上六点半怀着特别忐忑的心情上了车(放我下去这不是去幼儿园的车。。) 一行二
阅读全文
摘要:A.[简单数学思维递推] 易得m题所组成所有分数集合中极小值m*6 极大值m*9, 因其子和差值均一, 则有若干组合组成连续闭区间[6*m, 9*m] 易推得6数极小时应有其余三数组合极大 则有公式 ans = max(-(n - m * ll(6)) + m, ll(0)) (未化简) 分割线 B
阅读全文

浙公网安备 33010602011771号