摘要: 比如食物链中,更新时就是模3,需要找到权值之间的规律 另外还有一种方法,就是建立三倍的并查集,第一个并查集是A, 第二个并查集是B,第三个并查集是C,输入关系时,把同类和天敌输入,可以利用并查集的传递性,A->B B->C可以传递到关系C->A 这也正是题目所希望的 其次,建立集合时,关系是对称的, 阅读全文
posted @ 2021-03-17 00:35 大W 阅读(27) 评论(0) 推荐(0)
摘要: #include<cstdio> #include<cstring> #include<iostream> using namespace std; const int maxn = 100005; int f[maxn][20], logn[maxn], n, m, a[maxn]; void p 阅读全文
posted @ 2021-03-17 00:20 大W 阅读(19) 评论(0) 推荐(0)
摘要: 引用:https://blog.csdn.net/qq_30115697/article/details/88906534 要注意观察题目是否可以转化成该模型 只要能转化成卡特兰数的基本模型, 就能使用该公式,便捷解题 利用基本模型的推导 想出递推公式后进行的推导 阅读全文
posted @ 2021-03-14 17:25 大W 阅读(35) 评论(0) 推荐(0)
摘要: 通常以递归的形式进行计算,由于树有着优良的递归性质 树上的背包问题 时间复杂度为O(nk) 一般而言代码是这样的形式 阅读全文
posted @ 2021-03-14 16:26 大W 阅读(28) 评论(0) 推荐(0)
摘要: 经典例题 由于是环形,所以我们倍长序列,即4 5 9 4 变成 4 5 9 4 4 5 9 4 定义f[i][j]为区间[i,j]取的最大(最小)值,此时答案变为f[i][i +n - 1]中的最小值,i=1.....n 阅读全文
posted @ 2021-03-07 20:48 大W 阅读(44) 评论(0) 推荐(0)
摘要: 背包问题初始化的一个小技巧,各种背包都可以用 01背包常数优化 即后面(i…n)的所有物品都被装入背包后,剩余的空间仍然比 Ci 大。考虑到f[j]定义为容量为j的背包,装入前i种物品(不需要装满)的最大价值。若剩余空间比ci大,则此时f[ci]....f[v-sum(wi+1.....wn) - 阅读全文
posted @ 2021-03-05 20:42 大W 阅读(47) 评论(0) 推荐(0)
摘要: O(nlogn)求出最长不上升子序列的长度 就是用f[i]来表示不上升子序列的长度为i时的最优结尾 遍历数组 当前数小于末尾时就加入数组,否则二分数组把当前数插入到最优结尾。 证明如下: 设y为被取代的数 如果y在末尾,由于y < a[i],所以y后面能接的不如a[i]多,y让位给a[i]可以让序列 阅读全文
posted @ 2021-02-27 17:57 大W 阅读(485) 评论(0) 推荐(0)
摘要: https://blog.csdn.net/twtsa/article/details/8120269 例题P4147 玉蟾宫 阅读全文
posted @ 2021-02-27 15:41 大W 阅读(44) 评论(0) 推荐(0)
摘要: 常规的二分搜索 1 while (l <= r) { 2 int mid = (l + r) / 2; 3 if (f[mid] == x)return mid; 4 if (f[mid] > x) l = mid + 1; 5 else r = mid - 1; 6 } 查找小于等于x的第一个数 阅读全文
posted @ 2020-12-11 21:33 大W 阅读(67) 评论(0) 推荐(0)
摘要: 启发式搜索有着启发函数f(n) = g(n) + h(n) 每次选择最小的f(n)进行扩展 g(n)为起点到当前的代价 h(n)为当前到终点的估计代价 而h(n)大多数情况下可以用以下的方法求: 如果图形中只允许朝上下左右四个方向移动,则可以使用曼哈顿距离。 如果图形中允许朝八个方向移动,则可以使用 阅读全文
posted @ 2020-12-04 22:11 大W 阅读(63) 评论(0) 推荐(0)
点击右上角即可分享
微信分享提示