摘要: 给定一个有向无环图,询问每个点可以到达点的数目. void toposort() { for(rint i=1;i<=n;i++) if(!deg[i]) q.push(i); while(!q.empty()) { int x=q.front(); q.pop(); f[x].set(x,1); 阅读全文
posted @ 2022-01-21 20:32 __iostream 阅读(34) 评论(0) 推荐(0)
摘要: 给定m个长度为n的序列 每个序列选一个数求和,求最小的n个 用堆来模拟搜索的过程 关键在于状态不重复 朴素写法: 用map来维护m个指针,判重 但是空间复杂度是$mn^2$的会爆 #include <iostream> #include <cstdio> #include <cstring> #in 阅读全文
posted @ 2022-01-21 20:24 __iostream 阅读(38) 评论(0) 推荐(0)
摘要: 哈夫曼树: 最小化权值与距离的乘积和 对于形如 \(min\{\sum w_i \times l_i\}\) 的形式,都可以考虑采用哈夫曼树来贪心 荷马史诗 哈夫曼树和trie树结合考察 两者有相似的性质, 并且满足哈夫曼树要求的条件 int main() { n=read(); k=read(); 阅读全文
posted @ 2022-01-21 19:07 __iostream 阅读(64) 评论(0) 推荐(0)
摘要: 每个商品有收益p和时限d 求时限内的最大收益 法一: 当从前向后贪心的时候 可能会出现反悔的情况 这样局部最优解和全局最优解有不一致. 为了解决反悔问题,我们可以采用倒序贪心的方式 int main() { while(scanf("%d",&n)!=EOF) { while(q.size()) q 阅读全文
posted @ 2022-01-21 19:06 __iostream 阅读(27) 评论(0) 推荐(0)
摘要: 给定一个序列 求其中最小的k个的和(这k个数任意两个不能相邻) 从k=2的时候出发: 发现要么选择最小的,要么选择最小元素两边的 用类似数学归纳的方式不断进行这种操作 设置一种反悔贪心 价值作为两边的价值减去中间的价值 #include <iostream> #include <cstdio> #i 阅读全文
posted @ 2022-01-21 19:03 __iostream 阅读(31) 评论(0) 推荐(0)
摘要: 求基环树直径 未完成 挖坑 #include <iostream> #include <cstdio> #include <cstring> #include <queue> #define ll long long #define fs first #define sc second #defin 阅读全文
posted @ 2022-01-20 18:39 __iostream 阅读(30) 评论(0) 推荐(0)
摘要: 给定一棵树 给定一些障碍,用这些障碍来切断根节点到所有叶子节点的路径,可以移动障碍,求总时间最少 可能会发生这样的一种情况: 当前子树的军队去管辖别的子树 当前子树被别的军队管辖 正确且简便的思路应当是这样的: 1.二分答案 在二分的时间内可以分为到达根的节点和没有到达根的节点 2.所有能够到达根的 阅读全文
posted @ 2022-01-20 14:41 __iostream 阅读(34) 评论(0) 推荐(0)
摘要: 求长度不小于L,平均数最大的最大子段和 书中的问题: 为什么答案具有单调性? 平均数越大越好 我们二分一个平均数 如果找不到一个字段比这个平均数大 那么更大的平均数肯定也找不到 如果找到了的话 那么就可以尝试更大的平均数 减去平均数 转化为字段的正负 平均数用二分 子段求和转化为前缀和 二元问题 两 阅读全文
posted @ 2022-01-20 14:33 __iostream 阅读(31) 评论(0) 推荐(0)
摘要: 二分两种写法 保留下界 但是忽略左答案 while(l+1<r) { int mid=(l+r)>>1; if( check(mid) ) r=mid;//错误点1 else l=mid; } return r; 保留上界 忽略右答案 while(l+1<r) { int mid=(l+r)>>1; 阅读全文
posted @ 2022-01-20 14:31 __iostream 阅读(31) 评论(0) 推荐(0)
摘要: 给定一个环序列 求 \(max\{ a[i]+a[j]+min(i-j,n-(i-j) ) \} ,i>j\) 环上距离最大问题 对于这种既要考虑顺时针,也要考虑逆时针的时候,可以考虑复制环接在后面 这样在两个环的交界处就相当于不同方向转移 #include <iostream> #include 阅读全文
posted @ 2022-01-16 22:49 __iostream 阅读(42) 评论(0) 推荐(0)