zoukankan      html  css  js  c++  java
  • tyvj1097 mm不哭

    背景

    Bless all rp++..

    描述

    在一个数轴上,有n个MM(绝非恐龙!)在哭泣(5555~一直哭).

    tcboy也在这个数轴上,并恰好看到了这一幕,由于每个MM哭都会让tcboy损失一定的rp,于是tcboy有必要去安慰她们.(真命苦啊 T.T)

    开始时,tcboy站在k号MM的旁边.

    现在知道第i个MM哭泣每秒钟会使tcboy降低 w[i]的rp (单位rp/s).

    而tcboy的行走速度很慢只有1m/s . 

    tcboy安慰MM的方式很特别(怎么安慰随便大家YY了..#@$%^%$#@),不需要花费时间.

    请计算tcboy安慰完所有MM,会消耗掉的rp的最小值.

    输入格式

    输入文件的第一行包含一个整数N,2<=N<=1000,表示MM的数量。
    第二行包含一个整数V,1<=V<=N,表示开始时tcboy站在几号MM的旁边.
    接下来的N行中,每行包含两个用空格隔开的整数D和W,用来描述每个MM,其中0<=D<=1000,0<=W<=1000。D表示MM在数轴上的位置(单位: m),W表示每秒钟会使tcboy降低W的rp。

    输出格式

    输出只有一行:一个整数,即消耗rp之和的最小值。结果不超过1,000,000,000。

    测试样例1

    输入



    2 2 
    5 8 
    6 1 
    8 7

    输出

    56

    备注

    注意结果的大小。
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    struct MM{
        int d;
        int w;
    };
    int n,v;
    long long lf[1005][1005],rf[1005][1005],sumw[1005];
    MM mm[1005];
    bool cmp(MM a,MM b){
        return a.d < b.d;
    }
    int main(){
        cin>>n>>v;
        for(int i = 1;i <= n;i++){
            scanf("%d%d",&mm[i].d,&mm[i].w);
        }
        sort(mm+1,mm+1+n,cmp);
        for(int i = 0;i <= n;i++){
            for(int j = 0;j <= n;j++){
                lf[i][j] = rf[i][j] = 1087654321;
            }
        }
        for(int i = 1;i <= n;i++) sumw[i] = sumw[i-1] + mm[i].w;
        lf[v][v] = rf[v][v] = 0;
        for(int l = 1;l <= n - 1;l++){
            for(int i = max(v - l,1);i <= v;i++){
                int j = i + l;
                if(j > n) continue;
                lf[i][j] = min(lf[i+1][j] + (mm[i+1].d - mm[i].d) * (sumw[i] + sumw[n] - sumw[j]),rf[i+1][j] + (mm[j].d - mm[i].d) * (sumw[i] + sumw[n] - sumw[j]));
                rf[i][j] = min(rf[i][j-1] + (mm[j].d - mm[j-1].d) * (sumw[i-1] + sumw[n] - sumw[j-1]),lf[i][j-1] + (mm[j].d - mm[i].d) *(sumw[i-1] + sumw[n] - sumw[j-1]));
            }
        }
        cout<<(lf[1][n] < rf[1][n] ? lf[1][n] : rf[1][n]);
        return 0;
    }
  • 相关阅读:
    cas源码心得
    cas源码流程解析
    Windows 安装 Microsoft Visual Studio 2010
    Windows系统 为 Visual Studio软件 搭建 OpenCV2 开发环境
    Windows系统 为 QT5软件 搭建 OpenCV2 开发环境
    ROS Learning-007 beginner_Tutorials ROS节点
    Python 黑客 --- 001 UNIX口令破解机
    ROS Learning-006 beginner_Tutorials 编译ROS程序包
    ROS Learning-005 beginner_Tutorials 创建ROS程序包(就是软件包)
    ROS Learning-004 beginner_Tutorials 介绍简单的ROS命令
  • 原文地址:https://www.cnblogs.com/hyfer/p/5791412.html
Copyright © 2011-2022 走看看