藍橋杯 第二點五個不高興的小明 動態規劃

2022-07-18 12:33:10 字數 829 閱讀 4515

題目:

思路:令dp[i][j]表示第i次跳躍跳到位置j時跳過的方格權重值

對於第i次跳躍。由於一次最多跳p格,而且不會跳出頭,所以它的可能位置為[i,min(i*p)]

如果當前處在位置j,那麼它上一次的位置 bef可能在[max(0,j-p),j-1] 上一次的位置不可能小於0

轉移方程 

dp[i][j]=max(dp[i][j], dp[i-1][bef]+w[j])

需要注意的是,題目中的w[i]可能為負數,那麼在轉移過程中可能出現怎麼跳都比不跳更划算的情況,導致出現問題。所以需要預處理資料,把所有w[i]加上1000成為正數,最後結果裡減去對應的多加的數。

1 #include 2 #include 3

//#define local

4using

namespace

std;

5 typedef long

long

ll;6

const

int mx=1000+10;7

const

int inf=-1005*1005;8

intn, p, t;

9int

w[mx];

10int dp[mx][mx];//

dp[i][j] i times j sub

11void

solve()23}

24}25int ans=inf;

26for(int i=n;i>=n-p+1;i--)

29 ans-=1000*t;

30 cout3233

intmain()

藍橋杯C組第五屆第二題

題目 1 1 1 2 1 3 1 4 在數學上稱為調和級數。它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。但是,它發散的很慢 前1項和達到 1.0 前4項和才超過 2.0 前83項的和才超過 5.0 那麼,請你計算一下,要加多少項,才能使得和達到或超過 15.0 呢?請填寫這個整...

2016藍橋杯第二題答案

生日蠟燭 某君從某年開始每年都舉辦一次生日party,並且每次都要吹熄與年齡相同根數的蠟燭。現在算起來,他一共吹熄了236根蠟燭。請問,他從多少歲開始過生日party的?請填寫他開始過生日party的年齡數。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。26 236 answer...

藍橋杯 第二大整數

問題描述 編寫乙個程式,讀入一組整數 不超過20個 當使用者輸入0時,表示輸入結束。然後程式將從這組整數中,把第二大的那個整數找出來,並把它列印出來。說明 1 0表示輸入結束,它本身並不計入這組整數中。2 在這組整數中,既有正數,也可能有負數。3 這組整數的個數不少於2個。輸入格式 輸入只有一行,包...