1. 程式人生 > >【數學分析+除法分塊】Codeforces830C[Bamboo Partition]題解

【數學分析+除法分塊】Codeforces830C[Bamboo Partition]題解

題目概述

n 個竹子,每個竹子剛開始高度為 0 ,每過一天會長高 1 ,現在每過 d 天來檢查一次,如果 i 竹子的高度 ai 則將該竹子高度砍為 ai 且該竹子不再生長,求砍掉高度不超過 kd 最大為多少。

解題報告

除法分塊性質: ni 排序去重之後是 O(n) 的。

簡單說明:一個數的因子是 O(n) 的。

先推式子嘍:

i=1n{d[(ai1)modd+1]}ki=1n[d(ai1dai1d+1)]kndi=1n(aidai1d)knd+di=1nai1dk+i=1nai

根據除法分塊的性質,

ai1d 只有 ai 種情況,而 n 個則有 namax 種情況,所以暴力列舉然後 O(n) 驗證就可以了,效率 O(n2amax) ,好像有點慢……而且有較多的細節處理……

不妨繼續推:

di=1nai+d1dk+i=1naii=1nai+d1dk+ni=1aidi=1nai+d1dk+ni=1aid
由於右邊只有 k+ni=1ai 塊,而每塊中 d 越大,左邊的式子越小(右邊不變),所以每塊中有價值的只有最大的 d ,那麼還是暴力列舉即可。效率 O(nk

相關推薦

數學分析+除法Codeforces830C[Bamboo Partition]題解

題目概述 有 n 個竹子,每個竹子剛開始高度為 0 ,每過一天會長高 1 ,現在每過 d 天來檢查一次,如果 i 竹子的高度 ≥ai 則將該竹子高度砍為 ai 且該竹子不再生長,求砍掉高度不超過 k

莫比烏斯函式+除法BZOJ2301(HAOI2011)[Problem b]題解

題目概述 求 a≤x≤b,c≤y≤d 中 (x,y)=k 的個數。 解題報告 好像很多人說是莫比烏斯反演……但是我感覺只用到了狄利克雷卷積和莫比烏斯函式啊QAQ? 求區間果斷容斥,那麼先寫出

除法BZOJ1257 [CQOI2007]餘數之和sum

題面在這裡 把答案的形式寫出來就是這樣的: ∑i=1mn−⌊ni⌋⋅i nm−∑i=1m⌊ni⌋⋅i 可以發現,隨著i的增長,⌊ni⌋是可以分塊的 而且最多有O(n√)級別的塊數 示例程式:

2018 Multi-University Training Contest 7 Sequence矩陣快速冪+

Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 466    Accep

bitsethdu6085 Rikka with Candies

com die 過程 names -1 memset sign with pri 給你數組A和B,A B中的元素大小都不超過5w,且兩兩不同。 q次詢問,每次給你個k,問你有多少對(i,j),滿足A(i)%B(j)==k。 如題目所言模擬bitset的過程,實質上是個分塊

計蒜客17120 2017 ACM-ICPC 亞洲區(西安賽區)網絡賽 G. Xor

-i main stream 異或 cpc -1 eof wan 細節 題意:給一棵樹,每個點有權值。q次詢問a,b,k,問你從a點到b點,每次跳距離k,權值的異或和? 預處理每個點往其根節點的路徑上隔1~sqrt(n)的距離的異或和,然後把詢問拆成a->lca(a

BZOJ3720 Gty的妹子樹

直接 出發 傳說 素數 for efi read logs truct 題目 我曾在弦歌之中聽過你, 檀板聲碎,半出折子戲。 舞榭歌臺被風吹去, 歲月深處尚有余音一縷…… Gty神(xian)犇(chong)從來不缺妹子…… 他來到了一棵妹子樹下,發現每個妹子有一個美麗度…

[SDOI2017]數字表格莫比烏斯+數論

%d true urn mes clu 題意 GC scanf ont 一句話題意: 求: $N=min(n,m)$ $\prod_{d=1}^{N}\prod_{i=1,j=1}^{n,m}f[d]*[gcd(i,j)=d]$ 把$f[d]$提出來: $=\p

洛谷P2801教主的魔法二分

題目大意: 題目連結:https://www.luogu.org/problemnew/show/P2801 給出一串數列,有兩個操作: M

P2801教主的魔法

Description 給你一個長度為 \(n\) 的序列,要求資瓷區間加,查詢區間大於等於 \(k\) 的數的個數 Input 第一行是 \(n~,~Q\) 代表序列長度和操作個數 下面一行代表序列 下面 \(Q\) 行,每行四個引數,分別為 \(opt~,~l,~r~,w\) 如果 \(opt

洛谷P1198最大數

題目大意: 題目連結:https://www.luogu.org/problemnew/show/P1198 現在請求你維護一個數列,要求提供以下兩種操作: 查詢操作。 語法: Q

洛谷P3203彈飛綿羊

題目大意: 題目連結:https://www.luogu.org/problemnew/show/P3203 有 n n

教主的魔法 @洛谷P2801/upcexam3138

時間限制: 1 Sec 記憶體限制: 128 MB 題目描述 教主最近學會了一種神奇的魔法,能夠使人長高。於是他準備演示給XMYZ資訊組每個英雄看。於是N個英雄們又一次聚集在了一起,這次他們排成了一列,被編號為1、2、……、N。 每個人

codeforces 617E XOR and Favorite Number莫隊多次查詢求區間[l,r]中區間異或等於k的子區間個數

【連結】 【題意】 給定一個數組,多次查詢,問區間l,r中有多少個子區間滿足區間異或為k 【思路】 查詢很大,意味著每次回答的時間複雜度不能太大。對於本題,我們可以維護一個字首異或,sum[i],區間[a,b]異或為k等價於sum[a-1]^sum[b]=k,假如

LGP5113 Sabbat of the witch

【題目】 原題地址 給定一個長度為 n n n的數列

BZOJ2301 Problem B 莫比烏斯反演

題解: 對於 a≤x≤b,c≤y≤da≤x≤b,c≤y≤d,這個條件,我們發現比較難以處理,這時候我們可以利用二維字首和的思想,記 x≤b,y≤dx≤b,y≤d 時的答案為 A[b][d]A[b]

BZOJ2724 蒲公英

BZOJ2724 蒲公英 題目背景 親愛的哥哥: 你在那個城市裡面過得好嗎? 我在家裡面最近很開心呢。昨天晚上奶奶給我講了那個叫「絕望」的大壞蛋的故事的說!它把人們的房子和田地搞壞,還有好多小朋友也被它殺掉了。我覺得把那麼可怕的怪物召喚出來的那個

BZOJP2724Violet 6蒲公英題解

區間眾數,分塊亂搞,維護每個塊之間答案,詢問sqrt(n)logn Code: #include<cstdio> #include<cmath> #include<vector> #include<map> #include

HDU-6395多校7 Sequence(除法+矩陣快速冪)

review lse %d sca code left define hdu fin Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others

bzoj 1787: [Ahoi2008]Meet 緊急集合樹鏈剖lca

== ace dfs tdi 但是 stream -- max i++ 對於三個點求最小路徑長度和,答案肯定在某兩個點的lca上,因為如果把集合點定在公共lca上,一定有兩個點匯合後再一起上到lca,這樣顯然不如讓剩下的那個點下來 這個lca可能是深度最深的……但是我懶得證