題意:
有n頭wolf排成一排,殺一頭wolf回受到受到的傷害=它的本身a[i]+相鄰兩個b[i-1]+b[i+1].然後殺死第k個位置的wolf的話,k-1和k+1預設相鄰(滿足的話)。
思路:
用雨巨的話說(完全orz):這不就變成區間dp水題了麼……
dp[i][j]表示從第i頭狼到第j頭狼全部被殺死所受到的最小傷害。
a[i]表示第i頭狼的初始攻擊力,b[i]表示第i頭狼對相鄰狼的加成值。
直接code…自行理解吧….
#include
using
namespace
std;
typedef
long
long ll;
typedef
unsigned
long
long ull;
const
double eps=1e-5;
const
double pi=acos(-1.0);
const
int mod=998244353;
const ll inf=0x3f3f3f3f;
const
int n=110;
ll dp[n*2][n*2];
int a[n*2];
int b[n*2];
int n;
int main()}}
printf("case #%d: %lld\n",cas++,dp[1][n]);
}}
poj1651 區間DP 基礎
題意 給你一串數字,頭尾不能動,每次取出乙個數字,這個數字貢獻 該數字與左右相鄰數字的乘積,求乙個最小值。思路 用dp s t 去代表s到t的最小值,包括a s 和a t 然後從區間為3開始列舉,對每個小區間列舉乙個取出的數,狀態轉移方程就是 dp s t min dp s k dp k j a i...
HDOJ 1698 區間更新
include include include include include using namespace std define lson l m rt 1 define rson m 1,r rt 1 1 寫下自己對區間操作的一些理解,首先全部的資料都是儲存在sum rt 中的,可是如何理解這...
合併遊戲 737 區間Dp
石子合併 一 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 有n堆石子排成一排,每堆石子有一定的數量。現要將n堆石子並成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過n 1次合併後成為一堆。求出總的代價最小值。輸入 有多組測試資...