紫书上将这道题的方法成为“滑动窗口” ,它还应该有另一个名字叫——取尺法, 用两个首尾“指针”通过不断更新它们来逐步得到最优解,适合于解决连续序列的问题。
#include
using namespace std;
const int maxn = 1000000+5;
int T,n,A[maxn];
int main(){
scanf("%d",&T);
while(T--)...
分类:
其他好文 时间:
2015-05-14 22:09:04
阅读次数:
344
题目大意:在[1,n][1,n]区间内选择一些数,使得这些数两两互质,求这些数的和的最大值容易发现对于一个最优解,每个质数存在且仅存在于一个数中。(废话。
但是有可能一个数中存在多个质数
下面是两个结论:
1.一个数中最多存在两个不同的质数
2.这两个质数一个<n√n√>\sqrt n
我完全不会证明这两个结论,这两个结论都是官方题解里的
然后就好办了,我们对于<...
分类:
其他好文 时间:
2015-05-14 22:05:46
阅读次数:
180
分支限界法的求解目标 出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。分支限界法的搜索方式 以广度优先或以最小耗费优先的方式搜索解空间树。分支限界法的基本思想 分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。 在分支限界法中,每一个活结点...
分类:
其他好文 时间:
2015-05-14 20:28:58
阅读次数:
137
在扯模拟退火前要先扯扯爬山算法:一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到...
分类:
编程语言 时间:
2015-05-14 20:18:28
阅读次数:
145
长度为 n 的数列,要求把这个数列划分为任意块,每块的元素和小于 m,使得所有块的最大值的和最小。
思路:
很明显的一个转移方程是: dp[i] = max(dp[j] + max(a[j+1], a[j+2], ..., a[i])); 其中满足 sum[i] - sum[j]
f[j]表示前j个数分为若干份,最优解。
g[i]表示使f[i]取得最优解的j,即最...
分类:
其他好文 时间:
2015-05-13 22:01:01
阅读次数:
134
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741375.html贪心算法一、基本概念:所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法...
分类:
编程语言 时间:
2015-05-13 19:27:48
阅读次数:
128
//dp[i][j] 表示前i个数中有j段,得到的最大值
//dp[i][j] = max(dp[i-1][j] , dp[i-1][j-1]) + a[i]
//注意dp[i-1][j-1]为前i-1个点中不含i-1这个点得到的最优解
//dp[i-1][j]中必须要有i-1中这个点
#include
#include
#include
using namespace std ;
...
分类:
其他好文 时间:
2015-05-12 23:06:08
阅读次数:
107
收获: 1、如果有很多位操作,并且不包含+-×/等高级运算,那么可以一位一位考虑,如果求一个最优解,可以尝试逐位确定,这道题因为原始攻击值有范围,那么就需要数位DP。 1 /**************************************************************....
分类:
其他好文 时间:
2015-05-12 22:44:11
阅读次数:
192
开始阅读谭浩强的C语言程序设计。编译一个程序,除了语法以外,还需要管理内存,就是数据结构,学习如何高效的利用内存;数据关系的处理。例如学生管理系统的开发,但是数据关系是有最优解的,也就是可以学会的,因此学习主线就是沿着C语言的设计主线来推理C。接着对上次1+1的程序的探索,int i,j,k都是CP...
分类:
其他好文 时间:
2015-05-12 01:27:51
阅读次数:
156
1.最优子结构
?组合优化问题,指的是问题有多个可行解,每一个可行解对应一个目标值,目的是要在可行解中求得目标值最优者(最大或最小)。
?最优子结构特性指的是问题的最优解包含的子问题的解相对于子问题而言也是最优的。
2.子问题重叠
?问题的一个递归算法在每个递归步骤产生分支子问题时并不总是新的,而是对部分子问题解了又解。当一个递归算法一次又一次地访问同一个子问题时,我们说该最优化问题具有重叠...
分类:
编程语言 时间:
2015-05-10 12:58:49
阅读次数:
117