摘要: summary: 用好$sort$万事大吉 可以康康归并排序逆序对——当然还是觉得树状数组求逆序对更简单 冒泡排序 原理 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。 https://zhuanlan.zhihu.com/p/610942 阅读全文
posted @ 2020-08-22 10:26 ke_xin 阅读(16) 评论(0) 推荐(0) 编辑
摘要: algorithm 库中函数 reverse(v.begin(),v.end()) 翻转 O(n/2) sort(v.begin(),v.end()) 默认是从小到大排序 unique(a+1,a+1+n) 去重,使用前先sort 此处的删除,并不是真的删除,而是指重复的元素被移到了后面 应用(离散 阅读全文
posted @ 2020-08-22 10:25 ke_xin 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 容器 通用操作 O(1) size() ,empty() O(N) clear() vector向量——变长数组 头文件: #include<vector> 创建: vectora; vector<类型名>变量名 操作: O(1) a.empty(); bool !!! 下标访问 0~ a.size 阅读全文
posted @ 2020-08-22 10:22 ke_xin 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 解决可带权树上简单路径统计问题 其精髓在于把无根树平均地分割成若干互不影响的子问题求解,极大降低了时间复杂度,是一种巧妙的暴力。 例: 模板给定一棵树(无根树)和一个整数 k ,求树上等于 k 的路径有多少条? ​ (存在) 枚举不同的两个点,然后dfs算出ta们间的距离,统计一下就行了 大概是 O 阅读全文
posted @ 2020-08-22 10:18 ke_xin 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一棵 N 个点的无向树,边有边权,求树上任意两点间的距离和,答案对 1e9+7 取模。 题解:依题可知,这道题所求即Σi=1n−1Σj=i+1ndist(i,j),枚举树上任意两点并计算距离的复杂度要达到 O(n2logn),时间难以承受。 可以换一种方式思考,由于任意两点的距离都是答案贡 阅读全文
posted @ 2020-08-22 10:16 ke_xin 阅读(955) 评论(0) 推荐(0) 编辑
摘要: 树上差分 松鼠的新家 很显然的 起点+1,终点+1,然后lca和 fa[lca] 都减 1 最后统计答案时 因为终点被重复算了两次 ,所以要减1 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> 阅读全文
posted @ 2020-08-22 10:13 ke_xin 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 最小生成树 Kruskal: 适用稀疏图,\(O(mlogm+ma(n))\) $a(n)$是一次并查集的复杂度,更快,更常用 把边按照权值进行排序,用贪心的思想优先选取权值较小的边,并依次连接,若出现环则跳过此边(并查集来判断是否存在环)继续搜,直到已经使用的边的数量比总点数少一即可。 #incl 阅读全文
posted @ 2020-08-22 10:05 ke_xin 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 0/1分数规划 0/1分数规划 给定一些物品,每个物品有 a[i],b[i] ,要求选 k 个,最大化 (∑ a[i])/(∑b[i]) 。 二分,判定答案是否能 ≥mid 。 那么即 (∑a[i])/(∑b[i])≥mid ,也即 ∑a[i]-mid×b[i] ≥0 。 将物品按照 a[i]-mi 阅读全文
posted @ 2020-08-22 09:32 ke_xin 阅读(43) 评论(0) 推荐(0) 编辑
摘要: T1 啊?60改成20???啊啊啊 60 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N=1000005; const int mod=1000000007; int 阅读全文
posted @ 2020-08-22 09:03 ke_xin 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 咳咳。。。这场考试摸了 T1蓝蓝的棋盘 我菜炸了。。。 这竟然是个dp。。。长得真像博弈论 80分做法:设dp[x]表示棋子目前在位置x的答案(先手减去后手的分数). 状态转移方程dp[xl=max(a[y]-dp[y])(x<y<=min(n,x+m)),且dp[n]=0 直接枚举y转移即可,复杂 阅读全文
posted @ 2020-08-21 19:44 ke_xin 阅读(39) 评论(0) 推荐(0) 编辑