bzoj 1968 整除分塊
題目很裸,求∑i=1~n⌊n/i⌋
這個東西可以直接暴力O(n),但對於這個複雜度來說顯然不優秀
直接列舉的話會發現很多項的值都是相同的,而且呈塊狀分佈,那麼就可以用道整除分塊來解決
好了現在我們就可以在sqrt(n)的時間內求出這個值了
然鵝整除分塊經常套這莫反,有時需要求mu或者phi的字首和,就需要用到杜教篩,然後我不會就溜了
結論:一個值相同的塊的最後一個元素是n/(n/i)
貼程式碼走人
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> using namespace std; int n; long long ans = 0; int main() { scanf("%d", &n); for (int lf = 1, rg; lf <= n; lf = rg + 1) { rg = n / (n / lf); ans += 1LL * (rg - lf + 1) * (n / lf); } cout << ans << endl; return 0; }
相關推薦
bzoj 1968 整除分塊
題目很裸,求∑i=1~n⌊n/i⌋ 這個東西可以直接暴力O(n),但對於這個複雜度來說顯然不優秀 直接列舉的話會發現很多項的值都是相同的,而且呈塊狀分佈,那麼就可以用道整除分塊來解決 好了現在我們就可以在sqrt(n)的時間內求出這個值了 然鵝整除分塊經常套這莫反
#莫比烏斯反演,整除分塊,線性篩#洛谷 2522 bzoj 2301 problem b
題目 求a≤x≤b,c≤y≤da\leq x\leq b,c\leq y\leq da≤x≤b,c≤y≤d中gcd(x,y)=kgcd(x,y)=kgcd(x,y)=k的個數 分析 其實只要做了洛谷
#莫比烏斯反演,整除分塊,線性篩#bzoj 3994 洛谷 3327 [SDOI2015]約數個數和
題目 設 d ( x )
[Bzoj 2956] 模積和 (整除分塊)
scanf 方法 using 展開 sin 乘法 algorithm queue 分塊 整除分塊 一般形式:\(\sum_{i = 1}^n \lfloor \frac{n}{i} \rfloor * f(i)\)。 需要一種高效求得函數 \(f(i)\) 的前綴和的方
BZOJ 4216 Pig 分塊亂搞
ces strong ng- clu sin 方法 dsm cstring parent 題意:id=4216">鏈接 方法:分塊以節約空間。 解析: 這題坑的地方就是他僅僅有3M的內存限制,假設我們開longlong前綴和是必死的。
BZOJ 2724 蒲公英 | 分塊模板題
cnblogs 函數 != turn 序列 數組 我會 swap char 題意 給出一個序列,在線詢問區間眾數。如果眾數有多個,輸出最小的那個。 題解 這是一道分塊模板題。 一個詢問的區間的眾數,可能是中間“整塊”區間的眾數,也可能是左右兩側零散的數中的任意一個。為了\(
整除分塊
跳過 就會 += splay http source 能力 var OS 前言 最近在學習莫比烏斯反演,發現了一個基本上所有的有關莫比烏斯反演的題目,都涉及到一個小的知識點: 整除分塊。 所以,在學習莫比烏斯反演之前學會整除分塊是很有必要的。 那麽,我就來介紹一下整除分塊
整除分塊學習筆記+[CQOI2007]余數求和(洛谷P2261,BZOJ1257)
CQ 找到 SQ 等等 HP alt target new n) 上模板題例題: [CQOI2007]余數求和 洛谷 BZOJ 題目大意:求 $\sum^n_{i=1}k\ mod\ i$ 的值。 等等……這題就學了三天C++的都會吧? $1\leq n,k\leq 10^
51Nod 1225 - 餘數之和(整除分塊)
【題目描述】 【思路】 整除分塊+等差數列 設 p = ⌊
特殊整除分塊的優化
整除分塊十分naive,但是卡常之後就不清真了。 如果需要計算\[\sum_{i=1}^n\lfloor \frac{n}{i} \rfloor\] 有一個naive的做法就是 for (long long i=1,la; i<=n; i=la+1){ la=n/(n/i); ans
BZOJ 3276 磁力 分塊
慣例,傳送門:3276 磁力 然後就開講啦,分塊思維題…… 1.首先要明白:這題的樸素做法是直接對石頭bfs 但很快就能發現2.5*105的複雜度肯定是T到飛起的,於是考慮優化時間複雜度. 2.思考:怎樣才能對於每塊石頭只掃一遍呢
【舊部落格搬運】整除分塊學習筆記
整除分塊學習筆記 Luogu P2261 [CQOI2007]餘數求和 題目: 給定\(n, k\)(\(n,k\leq 10^9\)),求\[\sum_{i=1}^n i\rm \;mod \;k\] 分析: \[\sum_{i=1}^n i\rm \;mod \;k\] 由取模意義可得:
杜教篩(整除分塊,積性函式,尤拉與莫比烏斯,狄利克雷卷積)
參考資料 整除分塊: 當我們求∑ni=1f([ni])∑i=1nf([ni])的時候,如果1到n求一遍感覺太傻了,因為會有很多重複的計算,例如:n=10000時,i在[101,111]時,都有[ni]=9[ni]=9,所以我們只需要對所有數分成如上的一個
牛客網練習賽25A—因數個數和(整除分塊)
題目描述 q次詢問,每次給一個x,問1到x的因數個數的和。 輸入描述: 第一行一個正整數q ; 接下來q行,每行一個正整數 x 輸出描述: 共q行,每行一個正整數表示答案 題意: 給你一個n,求1的因子數+2的因子數+3的因子數+......+n的因子數。
#莫比烏斯反演,整除分塊#洛谷 3455 ZAP-Queries
題目 給定n,mn,mn,m,求1≤x≤n1\leq x\leq n1≤x≤n,1≤y≤m1\leq y\leq m1≤y≤m滿足gcd(x,y)=dgcd(x,y)=dgcd(x,y)=d的(x,y)
數論分塊之整除分塊
some 解決 相同 php 整除 簡單 tro som 我們 前言 最近在學莫比烏斯反演,然而只看懂了莫比烏斯函數,然後反演看著一臉懵逼,最後只看懂了數論分塊裏面的一個分支內容(也是莫比烏斯反演的前置姿勢),整除分塊 於是寫一篇博文記錄一下整除分塊 整除分塊 整除分塊是用
[gym101485]Debugging 記憶化+整除分塊
/* [gym101485]Debugging 記憶化+整除分塊 by zhuhua AC time: 31ms n行程式碼,跑一遍Rs,加一行輸出Ps,問找出崩潰位置的最壞最短時間。 n行程式碼 -> n-1個空格開始填空找位置 —> 算插空
洛谷P2261 [CQOI2007]餘數求和(整除分塊)+一點學習筆記
題目背景 數學題,無背景 題目描述 給出正整數n和k,計算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的餘數。例如G(10, 5)=5 mod 1 + 5 mod 2 + 5 mod 3 + 5 m
LG3455[POI2007]ZAP-Queries【整除分塊+莫比烏斯反演】
LG3455[POI2007]ZAP-Queries【整除分塊+莫比烏斯反演】 前置知識:整除分塊 整除分塊 注:以下內容來自洛谷 題目大意 求$\sum_{i=1}^{a}\sum_{j=1}^{b}[gcd(x,y)=d]$ 多組輸入 $1\le d\le a,b\le 50
BZOJ 3585: mex(分塊+莫隊)
傳送門 解題思路 首先直接莫隊是能被卡的,時間複雜度不對。就考慮按照值域先進行分塊再進行莫隊,然後統計答案的時候就暴力掃所有的塊,直到一個塊內元素不滿,再暴力掃這個塊就行了,時間複雜度O(msqrt(n)) 程式碼 #include<iostream> #include<cstd