• 17098 广告牌最佳安放问题


    17098 广告牌最佳安放问题

    时间限制:1000MS  内存限制:65535K
    提交次数:0 通过次数:0

    题型: 编程题   语言: G++;GCC;VC

     

    Description

    有一条路从西向东M公里,是一段旅行的公路。
    
    在这段公路上放置n块广告牌,广告牌的地点:x1,x2,...,xn。
    如果你放一块广告牌在地点xi,就能获得ri的收益(ri>0)。
    
    该地公路局规定:两块广告牌不能小于或等于5公里。
    
    现在请你挑选并安排这些广告牌放置地点,使得你的总收益在公路局规定的限制下达到最大。
    




    输入格式

    第一行:公路长度M,广告牌的总数n,中间空格。(M<100000, n<M)
    第二行:广告牌安置地点向量:x1  x2  ...  xn
    第三行:广告牌安置收益向量:r1  r2  ...  rn



    输出格式

    第一行:最大总收益。
    



     

    输入样例

    20 4
    6 7 12 14
    5 6 5 1



     

    输出样例

    10
    
    解释:这里指挑选1和3号广告牌是效益最优(总效益为10)且符合公路局规定的方案。
    



     

    提示

    定义符号:
    广告牌安置地点向量:x1  x2  ...  xn
    广告牌安置收益向量:r1  r2  ...  rn
    
    假设d[i]表示:从西向东到第i个广告牌地点xi处,可选择放置广告牌的最大效益值。
    (1)i=1时,d[1]=r1;
    (2)i>1时,d[i]=max{d[i-1],d[j]+ri | for all possible j, 1<=j<=i && si-sj>5 }
    
    d[n]就是原问题所求的符合公路局规定的最大广告效益和。
    







    我的代码实现:
    #include<stdio.h>
    #define N 100005
    int d[N];
    //(1)i=1时,d[1]=r1;
    //(2)i>1时,d[i]=max{d[i-1],d[j]+ri | for all possible j, 1<=j<=i && si-sj>5 }
    //
    //
    int max(int x,int y){
        return x>y?x:y;
    }
    
    void ff(int *x,int *r,int n){
        d[1]=r[1];
        int maxx;
        for(int i=2;i<=n;i++){
            maxx=0;//记录d[j]+ri的最大值 
            for(int j=1;j<=i;j++){//此处maxx不能从d[1]+ri开始,因为会误导后面max()的判断。以及j应该从1开始,不要从2开始 
                if((x[i]-x[j]>5)&&(maxx<d[j]+r[i]))
                    maxx=d[j]+r[i];
            }
            d[i]=max(d[i-1],maxx);
        }
    }
    
    
    int main(){
        int x[N],r[N];
        int n,m;
        scanf("%d %d",&m,&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&x[i]);
        }
        for(int i=1;i<=n;i++){
            scanf("%d",&r[i]);
        }
        ff(x,r,n);
            printf("%d ",d[n]);
        return 0;
    }
     
     






  • 相关阅读:
    URL和URI之间的区别
    nom Uncaught Error: Cannot find module 'babel-runtime/regenerator'
    PHP中使用curl获取头信息headers的一些笔记
    Typora中自定义命令上传图片
    iOS链接big sur弹出“文件找不到”
    云开发cannot find module wx-server-sdk
    关于Laravel框架中Guard的底层实现
    PHP8中字符串与数字的比较更智能
    git refusing to merge unrelated histories
    k8s入门-资源文件实现
  • 原文地址:https://www.cnblogs.com/double891/p/8127750.html
Copyright © 2020-2023  润新知