zoukankan      html  css  js  c++  java
  • 【CODEVS1258】关路灯

    Description

    多瑞卡得到了一份有趣而高薪的工作。每天早晨他必须关掉他所在村庄的街灯。所有的街灯都被设置在一条直路的同一侧。

    多瑞卡每晚到早晨5点钟都在晚会上,然后他开始关灯。开始时,他站在某一盏路灯的旁边。

    每盏灯都有一个给定功率的电灯泡,因为多端卡有着自觉的节能意识,他希望在耗能总数最少的情况下将所有的灯关掉。

    多端卡因为太累了,所以只能以1m/s的速度行走。关灯不需要花费额外的时间,因为当他通过时就能将灯关掉。

    编写程序,计算在给定路灯设置,灯泡功率以及多端卡的起始位置的情况下关掉所有的灯需耗费的最小能量。

    Input

    输入文件的第一行包含一个整数N,2≤N≤1000,表示该村庄路灯的数量。

    第二行包含一个整数V,1≤V≤N,表示多瑞卡开始关灯的路灯号码。

    接下来的N行中,每行包含两个用空格隔开的整数D和W,用来描述每盏灯的参数,其中0≤D≤1000,0≤W≤1000。D表示该路灯与村庄开始处的距离(用米为单位来表示),W表示灯泡的功率,即在每秒种该灯泡所消耗的能量数。路灯是按顺序给定的。

    Output

    输出文件的第一行即唯一的一行应包含一个整数,即消耗能量之和的最小值。注意结果小超过1,000,000,000。

    Sample Input

    4

    3

    2 2

    5 8

    6 1

    8 7

    Sample Output

    56

    /*
    f(i,j,0)表示关掉区间[i,j]的灯,最后关的是i的最小耗电量;
    f(i,j,1)表示关掉区间[i,j]的灯,最后关的是j的最小耗电量;
    f(i,j,0)=Min{ f(i+1,j,0)+(w[1..i]+w[j+1..n])*(p[i+1]-p[i])
                , f(i+1,j,1)+(w[1..i]+w[j+1..n])*(p[j]-p[i]) } 
    f(i,j,1)=Min{ f(i,j-1,0)+(w[1..i-1]+w[j..n])*(p[j]-p[i])
                , f(i,j-1,1)+(w[1..i-1]+w[j..n])*(p[j]-p[j-1]) }
    */
    
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int k[1002]; //距离
    int e[1002]; //耗电量 
    long long f[1002][1002][2]; //最小能量 
    int min(int x,int y)
    {
        if (x>y) return y;
        else return x;
    }
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for (int i=1;i<=n;i++)
        {
            scanf("%d%d",&k[i],&e[i]);
            e[i]+=e[i-1];
        }
        memset(f,127,sizeof(f));
        f[m][m][0]=f[m][m][1]=0;
        for (int j=m;j<=n;j++)
            for (int i=j-1;i>=1;i--)
                {
                    f[i][j][1]=min(f[i][j-1][0]+(k[j]-k[i])*(e[n]+e[i-1]-e[j-1]),
                                    f[i][j-1][1]+(k[j]-k[j-1])*(e[n]-e[j-1]+e[i-1]));
                    f[i][j][0]=min(f[i+1][j][0]+(k[i+1]-k[i])*(e[i]+e[n]-e[j]),
                                    f[i+1][j][1]+(k[j]-k[i])*(e[n]-e[j]+e[i]));
                }
        printf("%ld",min(f[1][n][0],f[1][n][1]));        
        
        return 0;
    }
  • 相关阅读:
    端口
    log4j常用配置以及日志文件保存位置
    jbpm node signal
    JBPM3.2 TABLE
    JBPM TaskInstance 对象创建过程
    【转】链接脚本
    快速平方根倒数
    GPS开发之知识储备(NMEA0183)
    HEX文件格式和其校验算法
    NRF51822之IIC(MEMS_LIS2DH12)
  • 原文地址:https://www.cnblogs.com/liumengyue/p/5116439.html
Copyright © 2011-2022 走看看