摘要: 经典问题:利用两个相同的数字异或为0的特点,可以用来寻找“落单的数”。 1 #include 2 using namespace std; 3 4 int main () 5 { 6 int n; 7 while ( scanf("%d", &n), n ) 8 { 9 ... 阅读全文
posted @ 2015-07-14 19:40 hxy_has_been_used 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个男孩,每个男孩对女神都有一个love值Li和递减值Bi(love值每天递减这么多)。女神要从这n个男孩中选出k个男孩来一起去玩耍(每天选择一个男孩),要使这k个男孩的love值之和最大。 分析:当选定的男孩一定时,肯定要尽早选择递减较快的男孩,所以先按照递减值由大到小排序,然后做01背包 阅读全文
posted @ 2015-07-14 19:29 hxy_has_been_used 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 转化一下问题:求一个offer也拿不到的最小概率。 每个学校有个花费和概率,很显然是01背包问题。 阅读全文
posted @ 2015-07-14 18:35 hxy_has_been_used 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 白书上的例题,很是经典。poj 2442 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int M = 100; 9 const int N = 2000;1... 阅读全文
posted @ 2015-07-14 15:56 hxy_has_been_used 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 堆真是一种简单而又神奇的数据结构,以前用它求过前kth的数,现在又可以用两个堆来动态求解中位数。算法: 构建一个大顶堆和一个小顶堆,分别记为g和l。 假设当前中位数为mid,新读入一个数为tmp,则: 1.如果tmp = mid,则将tmp插入小顶堆,跳到步骤4。 3.如果大顶堆的元素个数比... 阅读全文
posted @ 2015-07-14 14:01 hxy_has_been_used 阅读(1770) 评论(0) 推荐(0) 编辑
摘要: 思路:很显然答案是长度减去字符串和它反转串的LCS,不过由于内存限制,需要使用滚动数组。(short也可以水过) 阅读全文
posted @ 2015-07-14 10:44 hxy_has_been_used 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 经典dp问题:求两个字符串的LCS(最长公共子序列)。 阅读全文
posted @ 2015-07-14 10:18 hxy_has_been_used 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 容易想到:对于每个i,求出最大的第一个子段在区间[0,i]内和最大的第二个子段在区间[i+1,n-1]内再相加即可。 对于第一个子段的求法: 令p[i]表示以i结尾的子段的最大连续子段和,则显然有: p[i] = max( a[i], a[i] + p[i - 1] ); 求完以后再: p[i] = 阅读全文
posted @ 2015-07-14 09:53 hxy_has_been_used 阅读(268) 评论(0) 推荐(0) 编辑