摘要: http://www.51nod.com/tutorial/course.html#!courseId=15 解题关键:主要是一种思想 $dp[i] = dp[i - 1]*2$ 如果a[i]不在之前出现 $dp[i] = dp[i - 1]*2 - dp[j - 1]$,如果a[i]最近在j的位置 阅读全文
posted @ 2017-05-13 01:13 Elpsywk 阅读(327) 评论(0) 推荐(0) 编辑
摘要: https://www.51nod.com/tutorial/course.html#!courseId=12 解题关键: 如果将子序列按照长度由短到长排列,将他们的最大元素放在一起,形成新序列$B\left\{ {{b_1},{b_2}, \ldots \ldots ,{b_j}} \right\ 阅读全文
posted @ 2017-05-12 22:10 Elpsywk 阅读(300) 评论(0) 推荐(0) 编辑
摘要: https://www.51nod.com/tutorial/course.html#!courseId=11&isCurrent=1 解题关键:1、注意i和j的最大取值都是n,k是i与j的和。 2、空间卡的很紧,多一位都不行。 转移方程:$dp[{x_1}][{y_1}][{x_2}][{y_2} 阅读全文
posted @ 2017-05-11 21:44 Elpsywk 阅读(237) 评论(0) 推荐(0) 编辑
摘要: https://www.51nod.com/tutorial/course.html#!courseId=11 题目大意: 有$N$种物品和一个容量为$W$的背包。第$i$种物品最多有$c[i]$件可用,每件体积是$w[i]$,价值是$v[i]$。求解将哪些物品装 入背包可使这些物品的费用总和不超过 阅读全文
posted @ 2017-05-11 17:36 Elpsywk 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 解题关键: 子序列和最大的两种情况:(1)子序列位于序列中间,不中断 (2)子序列分散在序列两端,此时中间部分的序列和最小,(因为序列总和一定),因此取子序列的最小值t,然后总值-t即为所求; 两种情况取max即可。 阅读全文
posted @ 2017-05-11 00:21 Elpsywk 阅读(431) 评论(0) 推荐(0) 编辑
摘要: https://www.51nod.com/tutorial/course.html#!courseId=8 解题关键:利用最大子序列和,将矩阵预处理一下,就可以将其转化了。 阅读全文
posted @ 2017-05-10 23:37 Elpsywk 阅读(167) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1003 解题关键:1、最大连续子序列和模板 2、max、end不能使用,在oj中会显示编译错误 3、注意模板中没有else if 阅读全文
posted @ 2017-05-10 20:22 Elpsywk 阅读(179) 评论(0) 推荐(0) 编辑
摘要: http://oj.xjtuacm.com/problem/21/ 对13进行分析,每种价格出现的次数: $(C_m^1 + C_m^2 + ... + C_m^m)(C_{n - m}^0 + C_{n - m}^1 + C_{n - m}^2 + ... + C_{n - m}^{n - m}) 阅读全文
posted @ 2017-05-09 01:44 Elpsywk 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 解题关键:1、直接套kmp模板即可,注意最后输出的位置,需要在索引的位置+1。 2、next用作数组名在oj中会编译错误, 3、选用g++,只有g++才会接受bits/stdc++.h OJ中g++和c++的区别: 1、输出double类型时,如果采用G++提交,scanf采用%lf,printf采 阅读全文
posted @ 2017-05-08 20:09 Elpsywk 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 【基本解题思路】 将n个相同的元素排成一行,n个元素之间出现了(n-1)个空档,现在我们用(m-1)个“档板”插入(n-1)个空档中,就把n个元素隔成有序的m份,每个组依次按组序号分到对应位置的几个元素(可能是1个、2个、3个、4个、….),这样不同的插入办法就对应着n个相同的元素分到m组的一种分法 阅读全文
posted @ 2017-05-06 15:47 Elpsywk 阅读(235) 评论(0) 推荐(0) 编辑