题目大概是,一个数轴上n个线段,每个线段都有起始坐标、长度和权值,问从中取出没有公共交点的线段的最大权和。 取k次是个经典的最小费用最大流问题,不过这题建容量网络有20W个点,离散化最多也要6W个点,不敢跑最小费用最大流。。 其实这题,也是个经典的DP,区间图最大权独立集问题,《挑战程序设计竞赛》这
分类:
其他好文 时间:
2016-03-06 12:53:39
阅读次数:
182
《挑战程序设计竞赛》上DP的一道习题。很裸的多重背包。一开始我写的倍增,把C[i]分解成小于C[i]的2^x和一个余数r。dp[i][j]的定义前i个数字能否到凑出j来,改成一位滚动数组。#include#include#include#include#include#include#include...
分类:
其他好文 时间:
2015-10-15 22:08:11
阅读次数:
242
【题目大意】给出n组ai和bi,去掉k个使得a的总和除以b的总和最大。【思路】也就是取(n-k)个数,最大化平均值,见《挑战程序设计竞赛》P144,最后公式为c(x)=((ai-x*bi)从大到小排列的前(n-k)个的和不小于0) 1 #include 2 #include 3 #include 4...
分类:
其他好文 时间:
2015-09-15 23:35:13
阅读次数:
427
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5360优先队列+贪心。(感觉这个贪心在《挑战程序设计竞赛》一书中有个类似的,有兴趣的可以找一下。)写优先队列优先级判断的时候把maxx写成minn也是醉了,调了2个小时才发现。看来应该再仔细一些啊。初始化...
分类:
其他好文 时间:
2015-09-04 17:08:12
阅读次数:
182
堆是形如下图的二叉树
堆的最重要的性质,就是儿子的值一定不小于父亲的值。树的节点从上到下,从左到右的顺序紧凑排列。
【插入数据】push
首先在堆的末尾插入数据,然后不断向上提升直到没有大小颠倒
【删除数据】pop
从堆中删除最小的数据
先将堆中最后一个节点的值复制到根节点上,并且删除最后一个节点。然后不断向下交换,直到没有大小颠倒;
在...
分类:
编程语言 时间:
2015-08-05 10:44:48
阅读次数:
143
题目链接:http://poj.org/problem?id=2431
Expedition
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 9148
Accepted: 2673
Description
A group of cows grabbed...
分类:
其他好文 时间:
2015-08-05 08:59:03
阅读次数:
379
题意:
给一个区间边界值很大的区间,但是区间大小较小,求出该区间内所有质数个数。
知识补充:
因数枚举:分解一个数n,至于要从1 枚举到 n??√\sqrt n 即可,然后把i和 n / i 当做因数加入vector
整数分解(把一个整数枚举出其质数基连乘的形式):从2开始枚举质数基,然后每次把该整数尽可能的被当前质数除去最大次数,这样该整数就会变小,极大减少枚举量。注意和map搭配使用,记录每...
分类:
其他好文 时间:
2015-07-28 18:41:49
阅读次数:
104
最近准备进入动态规划的章节,仔细看了看紫书上对01背包的讲解,感觉很好。。之前看《挑战程序设计竞赛》那本书,就没有讲的那么深刻 。 更加深刻的理解了什么叫记录结果再利用,手工操作了一遍01背包的过程,也有点明白它的状态是如何转移的了,而且那个状态方程所构成的递推关系真的很巧妙 。
言归正传。。这道题就是嵌套矩形问题稍微改了一下,之前的嵌套矩形只需要维护一个状态量就行了,但是这道题是立方...
分类:
其他好文 时间:
2015-07-10 22:21:49
阅读次数:
213
《挑战程序设计竞赛》2.3.1(POJ3624/NOIP2004采药问题)最基础的01背包问题,标程性质,又二维和一维两种写法。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int MAXN=3...
分类:
其他好文 时间:
2015-06-26 19:25:24
阅读次数:
139
几个概念:
完全二叉树:是指除叶子节点那层外,叶子节点以上的第k层都含有2k2^k个节点而且叶子节那层的节点都靠左方。
满二叉树:与完全二叉树先比,多了连叶子节点也要全满的限制条件。
堆的代码实现(数组实现):int heap[10000], sz = 0;void push(int x) { //向堆里面增加元素X
int i = sz++, p;
while(i > 0)...
分类:
其他好文 时间:
2015-04-17 22:22:15
阅读次数:
202