博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 5115 Dire Wolf 区间dp
阅读量:4336 次
发布时间:2019-06-07

本文共 3997 字,大约阅读时间需要 13 分钟。

题目链接:

Dire Wolf

Time Limit: 5000/5000 MS (Java/Others)Memory Limit: 512000/512000 K (Java/Others)

问题描述

Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not all, Dire Wolves appear to originate from Draenor.

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 first line contains only one integer T , which indicates the number of test cases. For each test case, the first line contains only one integer N (2 ≤ N ≤ 200).

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.

输出

For each test case, output a single line “Case #x: y”, where x is the case number (starting from 1), y is the least damage Matt needs to take.

样例输入

2

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 #1: 17

Case #2: 74

题意

n只狼站成一排,每只狼有两个属性:攻击力ai,辅助攻击力bi,一只狼的攻击力为ai+b[i-1]+b[i+1]。你打一只狼会受到ai+b[i-1]+b[i+1]伤害,并且这之狼会死掉,之后相邻的会靠在一起,问你受到最少的伤害打死所有的狼

题解

区间dp

一开始考虑的是[l,r]内,第一只要打死哪只狼,发现死了之后剩下的又会靠在一起。。。

考虑最后一只打死的是哪只狼,就不会有这个问题了,比如你考虑[l,r]内打死的最后一只是i,那么你就发现[l,i],[i,r]完全独立开了,就可以做了。(注意[l,r]中,l和r不能打死)

代码

#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define X first#define Y second#define mkp make_pair#define lson (o<<1)#define rson ((o<<1)|1)#define mid (l+(r-l)/2)#define sz() size()#define pb(v) push_back(v)#define all(o) (o).begin(),(o).end()#define clr(a,v) memset(a,v,sizeof(a))#define bug(a) cout<<#a<<" = "<
<
VI;typedef pair
PII;typedef vector
> VPII;const int INF=0x3f3f3f3f;const LL INFL=10000000000000000LL;const double eps=1e-9;const double PI = acos(-1.0);//start----------------------------------------------------------------------const int maxn=222;int dp[maxn][maxn];int arr[maxn],brr[maxn];int n;int dfs(int l,int r){ if(r-l<=1) return 0; if(dp[l][r]>=0) return dp[l][r]; int& res=dp[l][r]=INF; for(int i=l+1;i

转载于:https://www.cnblogs.com/fenice/p/6028804.html

你可能感兴趣的文章
Microsoft.Jet.OLEDB.4.0”提供程序不支持 ITransactionLocal 接口。本地事务不可用于当前提供程序...
查看>>
oc 代码块的使用
查看>>
转:Eclipse中打开文件所在文件夹的插件及设置
查看>>
Django 之Form
查看>>
开发ProxyServer的时候如何在一台PC上调试
查看>>
C#用于对用户输入数据进行校验的类
查看>>
低速前碰开发
查看>>
python-9-IO编程
查看>>
【GoLang】转载:我为什么放弃Go语言,哈哈
查看>>
【MySQL】MySQL 如何实现 唯一随机数ID
查看>>
【Redis】Redis分布式集群几点说道
查看>>
HDU2819(KB10-E 二分图最大匹配)
查看>>
mysql主从复制、redis基础、持久化和主从复制
查看>>
文档工具GitBook使用
查看>>
两个链表的第一个公共节点
查看>>
知道这20个正则表达式,能让你少写1,000行代码
查看>>
Digit Sum II( ABC044&ARC060)
查看>>
MariaDB 主从同步与热备(14)
查看>>
推荐的 CSS 书写顺序
查看>>
NIO:与 Buffer 一起使用 Channel
查看>>