Dire Wolf——HDU5115(区间DP)
题意
就是有一对狼,每个狼有初始的攻击力,并且还能给左右两边的狼提供攻击力加成,当冒险家杀死一头狼的时候他也会受到这个狼目前攻击力的伤害
实例解析
3
3 5 7
8 2 0
有三头狼,刚开始第二头狼给他左右两边的狼各加2攻击力,由于第一头狼左边没有狼,所以只给第二头狼加,第三头狼还那样,一系列操作后攻击力为(5,13,9),从左往右杀死狼
1、受到5点攻击,且第二头狼的攻击力加成消失(5,9)
2、受到5点攻击,且第三头狼攻击加成消失(7)
3最后结果5+5+7=17
题解
dp[i][j]=min(dp[i][j], dp[i][k-1]+dp[k+1][j]+a[k]+b[i-1]+b[j+1])
dp[i][i]=a[i]+b[i-1]+b[j+1];
这个dp[i][j]中的i、j就代表在原给出的序列中杀死第i到j头狼的最小伤害
其中这个k(i<=k<=j)就是枚举那一头狼是最后杀死的
这个dp[i][i]就提供了dp[i][j]的结果,所以要确定求dp[i][j]的时候dp[k][k](i<=k<=j)已经求出来了(典型的由部分推整体)
C++代码
#include<bits/stdc++.h>
using namespace std;
int a[],b[];
int dp[][];
const int inf = ;
int main(){
int t;
cin >> t;int cas = ;
while(t--){
memset(a,,sizeof a);
memset(b,,sizeof b);
memset(dp,,sizeof dp);
int n; cin >> n;
for(int i = ;i <= n ; i++) cin >> a[i];
for(int i = ;i <= n; i++) cin >> b[i];
for(int i = n;i >= ; --i ){
for(int j = i;j <= n ; ++j){
if(i == j){ dp[i][j] = a[i] + b[i-] + b[i+];
continue;
}
dp[i][j] = inf;
for(int k = i;k <= j; ++k){
// cout << dp[i][j] << endl; dp[i][j] = min(dp[i][j],dp[i][k - ] + dp[k + ][j] + a[k] + b[i-] + b[j + ]);
}
}
}
printf("Case #%d: %d\n",++cas,dp[][n]);
}
}
题面
Dire Wolf
Time Limit: 5000/5000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)
Total Submission(s): 4487    Accepted Submission(s): 2665
Dire wolves look like normal wolves, but these creatures are of nearly twice the size. These powerful beasts, 8 - 9 feet long and weighing 600 - 800 pounds, are the most well-known orc mounts. As tall as a man, these great wolves have long tusked jaws that look like they could snap an iron bar. They have burning red eyes. Dire wolves are mottled gray or black in color. Dire wolves thrive in the northern regions of Kalimdor and in Mulgore.
Dire wolves are efficient pack hunters that kill anything they catch. They prefer to attack in packs, surrounding and flanking a foe when they can.
— Wowpedia, Your wiki guide to the World of Warcra
Matt, an adventurer from the Eastern Kingdoms, meets a pack of dire wolves. There are N wolves standing in a row (numbered with 1 to N from left to right). Matt has to defeat all of them to survive.
Once Matt defeats a dire wolf, he will take some damage which is equal to the wolf’s current attack. As gregarious beasts, each dire wolf i can increase its adjacent wolves’ attack by bi. Thus, each dire wolf i’s current attack consists of two parts, its basic attack ai and the extra attack provided by the current adjacent wolves. The increase of attack is temporary. Once a wolf is defeated, its adjacent wolves will no longer get extra attack from it. However, these two wolves (if exist) will become adjacent to each other now.
For example, suppose there are 3 dire wolves standing in a row, whose basic attacks ai are (3, 5, 7), respectively. The extra attacks bi they can provide are (8, 2, 0). Thus, the current attacks of them are (5, 13, 9). If Matt defeats the second wolf first, he will get 13 points of damage and the alive wolves’ current attacks become (3, 15).
As an alert and resourceful adventurer, Matt can decide the order of the dire wolves he defeats. Therefore, he wants to know the least damage he has to take to defeat all the wolves.
The second line contains N integers ai (0 ≤ ai ≤ 100000), denoting the basic attack of each dire wolf.
The third line contains N integers bi (0 ≤ bi ≤ 50000), denoting the extra attack each dire wolf can provide.
3
3 5 7
8 2 0
10
1 3 5 7 9 2 4 6 8 10
9 4 1 2 1 2 1 4 5 1
Case #2: 74
In the first sample, Matt defeats the dire wolves from left to right. He takes 5 + 5 + 7 = 17 points of damage which is the least damage he has to take.
Dire Wolf——HDU5115(区间DP)的更多相关文章
- hdu5115 Dire Wolf【区间dp】
		
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4361169.html ---by 墨染之樱花 [题目链接]http://acm.hdu.e ...
 - hdu 5115 Dire Wolf(区间dp)
		
Problem Description Dire wolves, also known as Dark wolves, are extraordinarily large and powerful w ...
 - HDU 5115 Dire Wolf  ——(区间DP)
		
比赛的时候以为很难,其实就是一个区间DP= =..思路见:点我. 区间DP一定要记住先枚举区间长度啊= =~!因为区间dp都是由短的区间更新长的区间的,所以先把短的区间更新完.. 代码如下: #inc ...
 - Dire Wolf——HDU5115
		
Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not ...
 - Dire Wolf ---hdu5115(区间dp)
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5115 题意:有一排狼,每只狼有一个伤害A,还有一个伤害B.杀死一只狼的时候,会受到这只狼的伤害A和这只 ...
 - 算法复习——区间dp
		
感觉对区间dp也不好说些什么直接照搬讲义了2333 例题: 1.引水入城(洛谷1514) 这道题先开始看不出来到底和区间dp有什么卵关系···· 首先肯定是bfs暴力判一判可以覆盖到哪些城市····无 ...
 - HDU5115 Dire Wolf(区间DP)
		
渐渐认识到区域赛更侧重的是思维及基本算法的灵活运用,而不是算法的量(仅个人见解),接下来要更多侧重思维训练了. 区间DP,dp[i][j]表示从i到j最终剩余第i 与第j只的最小伤害值,设置0与n+1 ...
 - HDU 5115 Dire Wolf 区间dp
		
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5115 Dire Wolf Time Limit: 5000/5000 MS (Java/Others ...
 - 动态规划(区间DP):HDU 5115 Dire Wolf
		
Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not ...
 
随机推荐
- js  复杂研究
			
function test_001() { var t =0; return t || out_str("t未定义"), //1 // 执行1句;在执行2句; t||null // ...
 - Java多级文件夹上传
			
javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 <form id=" ...
 - 我的Android案例签到日历
			
2015年的Android案例之旅 案例八:签到日历 知识点: GridView的使用SQLite的使用 涉及文件: res->layout->activity_main.xml 主布局文 ...
 - [BZOJ3622]已经没有什么好害怕的了:DP+容斥原理
			
分析 说白了就是一道先DP再二项式反演的水题,然后被脑残博主把"多\(k\)组"看成了"糖果比药片能量大的组数恰好为\(k\)组",还改了各种奇怪的地方,最后看 ...
 - HDU2179--pi(麦金公式)
			
Problem Description 计算圆周率到小数点后5n 位.(本题不可打表) Input 正整数n<300. n=0结束. Output 圆周率pi到小数点后5n位.第1行输出3.以5 ...
 - 使用 UIStoryBoard 语法糖
			
最后更新: 2018-09-06 当你用 UIStoryBoard (以下简称 'SB') 做iOS开发时候,总是避免不了设置 StoryBoard ID 的问题, StoryBoard ID 是一个 ...
 - pwd命令学习
			
pwd命令学习 1.学习pwd命令 pwd命令功能为输出当前所在工作目录的绝对路径名称. 绝对路径和相对路径: 绝对路径:从根目录开始直到文件位置 相对路径:相对于程序当前所在目录到文件位置 例:程序 ...
 - 追加环境变量到Path
			
@echo off setlocal enabledelayedexpansion ::使用方法: :: "C:\WINDOWS" :: "C:\jar" SE ...
 - 屏蔽ffmpeg命令的所有提示
			
有时候需要隐蔽的执行ffmpeg不希望输出任何日志,提示.这个时候只需要多添加这个参数即可 -loglevel quiet
 - leetcode 342. 4的幂(python)
			
1. 题目描述 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16输出: true示例 2: 输入: 5输出: false 2. 思路 参考: ...