• 51nod建设国家


    小C现在想建设一个国家。这个国家中有一个首都,然后有若干个中间站,还有若干个城市。

    现在小C想把国家建造成这样的形状:选若干(可以是0个)的中间站把他们连成一条直线,然后把首都连在这一条直线的左端。然后每个点可以连一个城市,特别的是最右端的点可以连接两个城市。

    现在有n个城市的规划供小C选择。但是,他们那儿的交通条件比较差,他们那儿一天是2*H个小时,每个城市里面的人每天都会去首都拿一样东西,从他们所在的城市出发,到了首都之后拿了东西就走(拿东西的时间可以忽略不计),他们要在2*H个小时之内返回他们自己的家中(从家中出发到返回家中不超过2*H小时)。

    每个城市有两个属性,一个是城市的直径,另外一个是能居住的人口数目。对于第i个城市而言,这两个属性分别是hi,pi。

    城市的直径的意思是离这个城市出口最远的人想要出城先要在城里行走的最少的时间。

    在首都,中间站,城市之间行走要花费1小时的时间。

    小C想选择一些城市然后通过若干的中间站和首都连接起来,在每个人能在2*H小时返回的条件下所有城市居住的总人口数目要最多。

    样例解释:最上面的蓝点表示首都,其它的蓝点表示中间站,剩下的红圈表示选择的城市。
    Input
    单组测试数据。
    第一行包含两个整数n 和H (1 ≤ n ≤ 1000,1 ≤ H ≤ 1000000000),表示可供选择的城市数目和时间限制。
    接下来n行,每行有两个整数hi, pi (1 ≤ hi ≤ H, 1 ≤ pi ≤ 1000),第i个城市的两个属性,即直径和能容纳人口数。
    Output
    输出最多能居住的人口数目。
    Input示例
    5 10
    1 1
    1 1
    2 2
    3 3
    4 4
    Output示例
    11


    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    #define   Max       1010
    #define   ll        long long
    #define   max(a,b)  a>b?a:b
    
    ll dp[Max][Max];
    
    struct City
    {
        int hi,pi;
    }city[Max];
    int  cmp(City x,City y)
    {
        if(x.hi==y.hi)return x.pi>y.pi;
        return  x.hi>y.hi;
    }
    int main()
    {
    //    freopen("p1475t14in.txt","r",stdin);
        int n,h;
        ll ans=0;
        scanf("%d%d",&n,&h);
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&city[i].hi,&city[i].pi);
        }
        sort(city+1,city+n+1,cmp);
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;i++)
            for(int j=1;j<=i;j++)
            {
                dp[i][j]=dp[i-1][j];        
                if(j+city[i].hi-1<=h&&(j!=1))
                ans=max(ans,dp[i-1][j-1]+city[i].pi);        
                if(j+city[i].hi<=h)            
                dp[i][j]=max(dp[i][j],city[i].pi+dp[i-1][j-1]);    
                 
            }
            if(n==1)ans=max(ans,dp[1][1]);
        printf("%lld
    ",ans);
        return 0;
    } 
    View Code
  • 相关阅读:
    什么是J2EE
    JSE,JEE,JME三者之间有什么区别
    windows下git显示文件被修改,实际没有改动的问题解决办法
    laravel 多个项目共享SESSION
    laravel 共享session问题总结
    laravel5 报错419,form 添加crrf_field 后让然失败,本地环境配置问题
    QQ互联登录提示redirect uri is illegal(100010)完美解决方法
    vim鼠标模式打开与关闭
    HTML5----响应式(自适应)网页设计
    file_put_contents () failed to open stream: Permission denied 解决办法
  • 原文地址:https://www.cnblogs.com/duanyuanzhi/p/4872508.html
Copyright © 2020-2023  润新知