一道有趣的题目 安慰MM 动态规划

安慰MM

Description

在一个数轴上,有n个MM在哭泣(5555~一直哭).

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

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

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

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

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

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

Format

Input

输入文件的第一行包含一个整数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。

Output

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

Samples

输入数据 1

input1 复制代码
4
3
2 2
5 8
6 1
8 7

Copy

输出数据 1

output1 复制代码
56

Copy

cpp 复制代码
#include<bits/stdc++.h>
const int Max=1005;
using namespace std;
int f[Max][Max][2]={0},w[Max]={0},d[Max],n,v;
int main()
{
	cin>>n>>v;
	for(int i=1;i<=n;i++){
		cin>>d[i]>>w[i];
		w[i]+=w[i-1];
	}
	f[v][v][0]=f[v][v][1]=0;
	for(int i=v-1;i>=1;i--){
		f[i][v][0]=f[i+1][v][0]+(w[i]+(w[n]-w[v]))*(d[i+1]-d[i]);
		f[i][v][1]=f[i][v][0]+(w[i-1]+(w[n]-w[v]))*(d[v]-d[i]);
	}
	for(int j=v+1;j<=n;j++){
		f[v][j][1]=f[v][j-1][1]+(w[v-1]+(w[n]-w[j-1]))*(d[j]-d[j-1]);
		f[v][j][0]=f[v][j][1]+(w[v-1]+(w[n]-w[j]))*(d[j]-d[v]);
	}
	for(int i=v-1;i>=1;i--){
		for(int j=v+1;j<=n;j++){
			f[i][j][0]=min(f[i+1][j][0]+(w[i]+(w[n]-w[j]))*(d[i+1]-d[i]),f[i+1][j][1]+(w[i]+(w[n]-w[j]))*(d[j]-d[i]));
			f[i][j][1]=min(f[i][j-1][0]+(w[i-1]+(w[n]-w[j-1]))*(d[j]-d[i]),f[i][j-1][1]+(w[i-1]+(w[n]-w[j-1]))*(d[j]-d[j-1]));
		}
	}
	cout<<min(f[1][n][0],f[1][n][1]);
    return 0;
}
相关推荐
誰能久伴不乏2 分钟前
Qt C++ 解析 JSON 完全指南:从核心概念到工业级实战
c++·qt·json
郝学胜-神的一滴2 分钟前
力扣 144:二叉树前序遍历的优雅实现
java·数据结构·c++·python·算法·leetcode·职场和发展
Evand J7 分钟前
【MATLAB程序】基于σ修正自适应律的多无人机菱形编队控制仿真,附下载链接
开发语言·matlab·无人机·控制·编队飞行·多uav
risc1234567 分钟前
【Lucene】理解不是看见光,而是让眼睛适应黑暗
java·开发语言
枕星而眠8 分钟前
C++面向对象核心:类间关系与继承深度解析
运维·开发语言·c++·后端
秋越9 分钟前
从工程角度理解嵌入式C语言关键字
c语言·开发语言·嵌入式·嵌入式软件开发·嵌入式c语言·c语言关键字
MegaDataFlowers9 分钟前
543.二叉树的直径
算法
FBI HackerHarry浩9 分钟前
在Python中TCP网络程序开发的步骤流程
运维·服务器·开发语言·网络·python·pycharm
方也_arkling10 分钟前
【Java-Day16】API篇-Math类/System类/Object类/包装类
java·开发语言
Kurisu57510 分钟前
深度拆解:从 CPU 乱序执行到内存屏障,无锁编程的底层防线
算法