随笔分类 - ACM——各种模板
摘要:二分:返回第一个大于val的数51 3 5 6 96>>951 3 5 7 96>>7int bsearch(int val){ int l = 0, r = n; int mid = 0; while (l <= r){ mid = (l + r)>>1; if (a[mid] > val){ r = mid - 1; } else{ l = mid + 1; } } return a[l];}返回第一个大于等于val的值:int bsearch(i...
阅读全文
摘要:学习地方:http://www.wutianqi.com/?p=3107EK模板:O(V*E^2)临街矩阵实现:int bfs(int s,int e){ int i; queue<int>q; CL(vt,false); CL(pre,-1);//初始化 for (i = 0; i <= n + 1; ++i) f[i] = inf;//注意这里的范围 q.push(s); vt[s] = true; while (!q.empty()){ int u = q.front(); q.pop(); for (i = 0; i...
阅读全文
摘要:做了一些树形DP实在不想做了看到von在玩tarjan算法,好像放假之前看过关于rmq 以及tarjan算法的说明只是没具体弄明白。今天看了一下von分享的资料不错。找了一个模板题就当tarjan算法的模板吧http://acm.hdu.edu.cn/showproblem.php?pid=1269判断是否为强连通图 bcnt == 1只有一个强连通分量且为自己 bcnt >1 存在多个强连通分量View Code #include <cstdio>#include <iostream>#include <cstring>#include <ve
阅读全文
摘要:2、 RMQ算法(转载)对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大且查询很频繁时,该算法也许会存在问题。本节介绍了一种比较高效的在线算法(ST算法)解决这个问题。所谓在线算法,是指用户每输入一个查询便马上处理一个查询。该算法一般用较长的时间做预处理,待信息充足以后便可以用较少的时间回答每个查询。ST(Sparse Table)算法是一个非常有名的在线处理RMQ问题的算法,它可以在O(nlogn)时间内进行预处理,然后在O(1)时间内回答每个查询。首先是预处理,用动态规划(DP)解决。设A[i]是要求区间最值的数列,F[i, j]表示从第i个数起连续2^j个数中的
阅读全文
摘要:有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。状态转移方程:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k<=n[i]}此时他面临的不是01背包的选与不选的问题,而是从n[i]里面选多少个的问题。实现方法:http://acm.hdu.edu.cn/showproblem.php?pid=21911:转化成01背包,将每种背包转换成数量为n[i]的01背包求解View Code #include <iostream
阅读全文
摘要:有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。1:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k*c[i]<=v}2:f[v]=max(f[v],f[v-c[i]]+w[i]);完全背包面临的不是对于第i件物品选不选的问题了而是选多少件了问题了。。。所以f[v]的当前状态允许由当前状态推得。实现方法有是那种1:o(n*v)这里正确理解这句经典的话很关键(引用):换句话说,这正是为了保证每件物品只选一次,保证在考虑“选入第
阅读全文
摘要:不多讲,dd大牛的背包九讲如此之经典我们只能慢慢体会了:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。状态转移方程:1:f[i][v]=max(f[i-1][v],f[i-1][v-c[i]]+w[i]);2:for(i=0;i<N;i++){ for(v=V;v>=c[i];v--) { f[v]=max(f[v],f[v-c[i]]+w[i]); }} 自己的理解: 01背包的主要思想是对于这件物品做出选与不选的决定;将空间优化后V必须是逆序的,因为这样才能保证将当前的第i个物品放进去的时候,f...
阅读全文


浙公网安备 33010602011771号