hdoj5115 區間DP 基礎

2021-07-15 12:32:24 字數 792 閱讀 2536

題意:

有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次合併後成為一堆。求出總的代價最小值。輸入 有多組測試資...