poj 1456 - Supermarket(贪心+并查集)
2013-10-22 17:16
393 查看
题意:(from:http://www.cnblogs.com/rainydays/archive/2011/06/20/2085269.html)
有一些货物,每个货物有价值和卖出的截至日期,每天可以卖一个货物,问能卖出的最大价值是多少。
思路:(from:http://hi.baidu.com/vfxupdpaipbcpuq/item/13cbd3258c29e20d72863edf)
贪心,按利润排序,然后填入一个数组,f[i]表示第i天是否已经被占用。填入f时找到截至日期之前离截至日期最近的一个未被占用的日子。
利用类似并查集的方法优化表示第i天之前最近的未被占用的是第几天。
我们把连续的被占用的区间看成一个集合(子树),它的根结点为这个区间左边第一个未被占用的节点。
先排序,然后每次判断Find(b[i])是否大于0,大于0说明左边还有未被占用的空间,则占用它,然后合并(b[i], Find(b[i]) – 1)即可。同样这里我们规定只能左边的子树合并到右边的子树(想想为什么~~)。
代码如下:
有一些货物,每个货物有价值和卖出的截至日期,每天可以卖一个货物,问能卖出的最大价值是多少。
思路:(from:http://hi.baidu.com/vfxupdpaipbcpuq/item/13cbd3258c29e20d72863edf)
贪心,按利润排序,然后填入一个数组,f[i]表示第i天是否已经被占用。填入f时找到截至日期之前离截至日期最近的一个未被占用的日子。
利用类似并查集的方法优化表示第i天之前最近的未被占用的是第几天。
我们把连续的被占用的区间看成一个集合(子树),它的根结点为这个区间左边第一个未被占用的节点。
先排序,然后每次判断Find(b[i])是否大于0,大于0说明左边还有未被占用的空间,则占用它,然后合并(b[i], Find(b[i]) – 1)即可。同样这里我们规定只能左边的子树合并到右边的子树(想想为什么~~)。
代码如下:
const int M = 10005; struct Node { int pi, di; bool operator < (const Node &tmp)const { return pi>tmp.pi; } }node[M]; int p[M]; int find(int x) { return p[x]==x?x:find(p[x]); } int main() { int n, maxpi; while(~scanf("%d", &n)) { maxpi = 0; for(int i = 0; i < n; ++i) scanf("%d%d", &node[i].pi, &node[i].di), maxpi = max(maxpi, node[i].pi); sort(node, node+n); int ans = 0; for(int i = 0; i <= maxpi; ++i) p[i] = i; for(int i = 0; i < n; ++i) if(find(node[i].di)>0) { ans += node[i].pi; int tmp = find(node[i].di); int x = find(tmp); int y = find(tmp-1); p[x] = y; } printf("%d\n", ans); } return 0; }
相关文章推荐
- poj 1456 Supermarket (贪心, 并查集)
- Supermarket POJ - 1456------贪心加并查集
- [POJ 1456]Supermarket[贪心][优先队列or并查集优化]
- POJ-1456 Supermarket 贪心 并查集优化
- POJ 1456 Supermarket(贪心 + 并查集 )
- poj 1456 Supermarket(贪心+并查集,贪心+优先队列)
- poj 1456 Supermarket 贪心 并查集优化
- POJ-1456 Supermarket【贪心+并查集】
- POJ-1456 Supermarket(贪心,并查集优化)
- POJ 1456 supermarket(贪心加并查集)
- POJ---1456(Supermarket ,贪心,并查集优化,处理冲突)
- POJ-1456 Supermarket(贪心,并查集优化)
- POJ 1456 Supermarket 区间问题并查集||贪心
- POJ 1456 Supermarket(贪心+并查集)
- POJ 1456 Supermarket (贪心+并查集)
- POJ 1456 (贪心+并查集) Supermarket
- poj 1456 Supermarket (贪心+并查集)
- POJ 1456——Supermarket——————【贪心+并查集优化】
- Supermarket poj 1456 (贪心,并查集)
- POJ 1456 Supermarket【贪心+并查集】