zoukankan      html  css  js  c++  java
  • poj1456

    题意:有一些货物,每个货物有价值和卖出的截至日期,每天可以卖一个货物,问能卖出的最大价值是多少。

    分析:贪心,按利润排序,然后填入一个数组,f[i]表示第i天是否已经被占用。填入f时找到截至日期之前离截至日期最近的一个未被占用的日子。

    利用类似并查集的方法优化getanc(i)表示第i天之前最近的未被占用的是第几天

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    #include
    <algorithm>
    usingnamespace std;

    #define maxn 10005

    struct Product
    {
    int p, d;
    }prod[maxn];

    int n;
    int father[maxn];

    booloperator< (const Product &a, const Product &b)
    {
    return a.p > b.p;
    }

    int getanc(int a)
    {
    if (a <0)
    return a;
    if (a == father[a])
    return a;
    return father[a] = getanc(father[a]);
    }

    bool ins(Product &a)
    {
    int temp = getanc(a.d -1);
    if (temp >=0)
    {
    father[temp]
    = getanc(temp -1);
    returntrue;
    }
    returnfalse;
    }

    int main()
    {
    //freopen("t.txt", "r", stdin);
    while (scanf("%d", &n) != EOF)
    {
    int t =0;
    for (int i=0; i < n; i++)
    {
    scanf(
    "%d%d", &prod[i].p, &prod[i].d);
    if (t < prod[i].d)
    t
    = prod[i].d;
    }
    sort(prod, prod
    + n);
    for (int i =0; i < t; i++)
    father[i]
    = i;
    int ans =0;
    for (int i =0; i < n; i++)
    if (ins(prod[i]))
    ans
    += prod[i].p;
    printf(
    "%d\n", ans);
    }
    return0;
    }
  • 相关阅读:
    MySQL锁
    mysql服务性能优化—my.cnf配置说明详解
    springmvc请求参数获取的几种方法
    Linux mysql 添加远程连接
    Linux 操作 mysql
    Linux 安装 mysql 转 http://www.cnblogs.com/fnlingnzb-learner/p/5830622.html
    linux 下 安装nginx
    dubbo 实战总结
    分布式事务的几种方式
    精巧好用的DelayQueue 转
  • 原文地址:https://www.cnblogs.com/rainydays/p/2085269.html
Copyright © 2011-2022 走看看