HDU 4362 多时段多地点找龙珠-dp-(数塔模型)

题意:一个时间点在数轴的不同位置有龙珠,但每个时间点只能且必须收集一个龙珠,在不同的位置收集龙珠会损失不同的能量,移动距离也会损失能量,求m段时间后损失的最小能量。

分析:就是一个数塔的dp模型,跟免费馅饼还有多时段多课问题一样。

dp[i][j]:第i段时间第j的位置的最小能量损失;

转移:dp[i][j]=min(dp[i+1][k]+|a[i][j].pos-a[i+1][k].pos|)+a[i][j].value,三重循环,交C++超时了,交G++过了

代码:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define INF 1000000007
using namespace std;
int t,m,n,x;
//long long b[100][1005];
struct node{
	int pos;
	long long value;
};
node a[100][1005];
long long dp[100][1005];

int main()
{
	scanf("%d",&t);
	while(t--){
		memset(a,0,sizeof(a));
	//	memset(b,0,sizeof(b));
		memset(dp,0,sizeof(dp));
	//	long long mx=-1;
		scanf("%d%d%d",&m,&n,&x);
		for(int i=1;i<=m;i++){
			for(int j=0;j<n;j++){
				scanf("%d",&a[i][j].pos);
			//	mx=max(mx,a[i][j].pos);
			}
		}
		a[0][0].pos=x,a[0][0].value=0;
		for(int i=0;i<=m;i++){
			for(int j=0;j<n;j++){
			   dp[i][j]=INF;
			}
		}
		for(int i=1;i<=m;i++){
			for(int j=0;j<n;j++){
				scanf("%I64d",&a[i][j].value);
			//	dp[i][j]=a[i][j].value;
			}

		}
	   for(int i=0;i<n;i++) dp[m][i]=a[m][i].value;
		for(int i=m-1;i>=0;i--){
			for(int j=0;j<n;j++){
			//	if(b[i][j]||i==0){
		//	cout<<i<<" "<<j<<": ";
					for(int k=0;k<n;k++){
				//	if(b[i+1][k]){
			//	cout<<dp[i+1][k]<<" "<<a[i+1][k].pos<<" "<<a[i+1][k].value;
						dp[i][j]=min(dp[i][j],a[i][j].value+dp[i+1][k]+abs(a[i+1][k].pos-a[i][j].pos));//cout<<" "<<dp[i][j]<<endl;
			//		}
				}
		//		}

			}
		}
		printf("%I64d\n",dp[0][0]);
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-06 15:37:28

HDU 4362 多时段多地点找龙珠-dp-(数塔模型)的相关文章

hdu 1176 免费馅饼 (dp 数塔类型)

免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 25712    Accepted Submission(s): 8760 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的1

HDU 1176免费馅饼 DP数塔问题转化

L - 免费馅饼 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1176 Appoint description:  prayerhgq  (2015-07-28) System Crawler  (2015-11-21) Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.

hdu 1176 dp 数塔问题

哎,一开始没看到从5开始.... 后来写懵了,用了queue正推,记录能到达的节点,p[i+1][j] = max(p[i][j],max(p[i][j-1],p[i][j+1])) 嗯,用stl mle了,自己写queue又tle,不知道为什么嚒,好像bfs我从没a过... 看了dicuss的思路,只看到数塔两个字我就懂了... 只能说巧妙了,区间反向确定我确实没想到... //数塔问题 /* t=0 5 t=1 456 t=2 34567 t=3 2345678 t=4 123456789

HDU 4337 King Arthur&#39;s Knights 找出一条哈密顿回路

n个点m条无向边 输出一条哈密顿回路 #include <cstdio> #include <cstring> #include <iostream> using namespace std; const int N = 155; int n, m; bool mp[N][N]; int S, T, top, Stack[N]; bool vis[N]; void _reverse(int l,int r) { while (l<r) swap(Stack[l++

HDU 4738 Caocao&#39;s Bridges(找割边)

HDU 4738 Caocao's Bridges 题目链接 注意几个坑,可能重边,至少要派一个人去炸,没有连通的时候就不用炸了 代码: #include <cstdio> #include <cstring> #include <vector> #include <algorithm> using namespace std; const int N = 1005; const int INF = 0x3f3f3f3f; int pre[N], low[N

HDU 6154 CaoHaha&#39;s staff 思维 找规律

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6154 题目描述: 围成一个面积不小于S的多边形, 最少需要多少根儿线段, 线段可以为单元格边或者对角线 解题思路: 最大的面积肯定是由根号2为边长的正方形围成了, 那么我们把所有正方形都遍历一遍, 找出S介于N, N+1的那个上界N+1设为max, 因为MAX所围成的多边形面积和MAX-1, MAX-2, MAX-3围成的多边形面积, 找出满足条件的最小的一个即可 代码: #include <io

hdu 2147 kiki&#39;s game(找规律)

kiki's game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 40000/10000 K (Java/Others)Total Submission(s): 10656    Accepted Submission(s): 6455 Problem Description Recently kiki has nothing to do. While she is bored, an idea appears in his

HDU 4349 Xiao Ming&#39;s Hope 找规律

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4349 Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1723    Accepted Submission(s): 1144 Problem Description Xiao Ming likes coun

HDU 1564 Play a game (博弈&amp;&amp;找规律)

Play a game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1430    Accepted Submission(s): 1168 Problem Description New Year is Coming! ailyanlu is very happy today! and he is playing a chessbo