HEOI2015 定價 解題報告

2021-07-15 07:56:07 字數 1040 閱讀 5707

【問題描述】

在市場上有很多商品的定價類似於 999 元、4999 元、8999 元這樣。它們和 1000 元、5000 元和 9000 元並沒有什麼本質區別,但是在心理學上會讓人感覺便宜很多,因此也是商家常用的**策略。不過在你看來,這種**十分荒謬。於是你如此計算乙個** p(p 為正整數)的荒謬程度:

1、首先將 p 看做乙個由數字組成的字串(不帶前導 0);

2、然後,如果 p 的最後乙個字元是 0,就去掉它。重複這一過程,直到 p 的最後乙個字元不是 0;

3、記 p 的長度為 a,如果此時 p 的最後一位是 5,則荒謬程度為 2 * a - 1;否則為 2 * a。

例如,850 的荒謬程度為 3,而 880 則為 4,9999 的荒謬程度為 8。

現在,你要**一樣閒置物品,你能接受的定價在 [l, r] 範圍內,你想要給出乙個荒謬度最低的**。

是我河北的省選題,從此我也是做過省選題的男人了!

但是用的是暴力法,還是有些羞愧。

暴力法列舉[l,r]的每個數,取荒謬度最低的**。

然而會tle。所以針對題目對暴力法進行優化:顯然在末尾有k個0的情況下,列舉下乙個數和列舉下乙個末尾數字0的個數相同的數得到的結果相同。計算出當前列舉到的數字末尾0的個數,然後瞎搞一下就a了

#include#include#include#define cogs

using namespace std;

inline int read()

x=ch-48;

while(ch=getchar(),isdigit(ch))x=x*10+ch-48;

return x*f;

}inline int getlen(int x)

inline int getny(int x)

inline int getnum(int x)

int main()

printf("%d\n",ans);

} #ifdef debug

while(1);

#endif

}

HEOI2015 定價 (貪心)

先說一下我對這個題目的態度 首先這一題是貪心,這個十分明顯,看了一眼其他題解都是十分優秀的貪心,可是大家都沒有想過嗎 你們貪心都是在區間 l,r 上列舉的貪心,雖然每一次可以直接加上 10 的階乘,但你們畢竟是用的 int long long 啊!這一題得正解複雜度是 log n 的,不得不說題目的...

HEOI2015 兔子和櫻花

題目傳送門 有一棵樹,裡面有很多點,每個點上有乙個櫻花量 a i a i a i 然後他的兒子數為 son i son i son i 刪除點以後這個點的櫻花和兒子都會繼承給他的父親,問最多刪除多少點,能滿足刪除的點的父親滿足 a i so n i m a i son i leq m a i s o...

HEOI2015 兔子與櫻花

一棵 n n le2 times10 6 個點的樹,每個點有乙個重量 c i 和乙個載重上限 m 刪除乙個結點時,將自身的重量加到父結點上,並將所有子結點連到父結點上。問若要保證對於任意乙個結點,子結點數與重量之和 le m 時,最多刪去幾個結點。自底向上貪心,子結點按照 c i 排序,能刪除的盡量...