bzoj 2964 boss單挑戰 個人心得

2021-08-15 10:07:55 字數 1132 閱讀 7311

說來慚愧這題的思路是從網上找的題解看的,本來覺著很好寫,真正寫起來才發現有不少需要注意的地方;

主體思路是將法攻和怒功分開dp,本來以為關於恢復生命的技能的使用次數做個加減法就好了,事實上並沒有這麼簡單,只好再進行一次dp;

由於本人太弱,實在想不起如何從i-1向i轉移,只能從i向i+1進行向後轉移,好像這樣也易於理解?

其中一定要牢記技能攻擊的順序,是先加血再受傷!!!

**:

#include

#include

const int maxn=1005;

using std::max;

using std::min;

int t,n,m,hp,mp,sp,dhp,dmp,dsp,x;

int dp[maxn][maxn];

struct asd

;asd b[11];

asd c[11];

void dtgh(int n,int sh,int hf,int maxp,asd *a,int num,int

*ans)

for(int i=0;ifor(int j=0;j<=maxp;j++)

else

if(j>=a[k].xh)

dp[i+1][j-a[k].xh]=max(dp[i+1][j-a[k].xh],dp[i][j]+a[k].ct);

ans[i]=max(ans[i],dp[i][j]);}}

for(int i=0;i<=maxp;i++)ans[n]=max(ans[n],dp[n][i]);

}int ai[maxn];

int ans1[maxn],ans2[maxn];

int bld[maxn][maxn];

int tim[maxn];

int main()

tim[i]=min(tim[i],bld[i][j]);}}

for(int i=1;i<=hp;i++)tim[n]=min(tim[n],bld[n][i]);

for(int i=1;i<=n;i++)

if(tim[i]>i)

}if(!flag)printf("tie\n");

}return

0;}

COGS 2964 數列操作

傳送門 題目描述 給定長度均為 n nn 的數列 a,b a,ba,b,其中 b bb 數列為 1 11 n nn 的全排列,a aa 數列全為 000。你需要支援 q qq 次操作,操作分為 add addad d 和 que ry query quer y 兩種。其中 x x x 表示對 x x...

2964 日曆問題 poj

總時間限制 1000ms 記憶體限制 65536kb 描述在我們現在使用的日曆中,閏年被定義為能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它們不是閏年。例如 1700,1800,1900 和 2100 不是閏年,而 1600,2000 和 2400是閏年。給定從公元2000年1...

codevs 2964公共素數因數

時間限制 1 s 空間限制 32000 kb 題目等級 silver 題解小單同學剛學習了乙個數分解成幾個素數 也叫質數 因子相乘的知識。例如 12 2 2 3 25 5 5 144 2 2 2 2 3 3 等,比如,第乙個表示式,說明12這個整數可以分解出2 2 3這三個質數因子。老師給他布置了乙...