BZOJ4815: [Cqoi2017]小Q的表格
重點
1
a(a+b)f(a,a+b)=abf(a,b)=a(b−a)f(a,b−a)=a(b mod a)f(a,b mod a)=d2f(d,d)
其中
d=gcd(a,b+b)
那麼
ans=i=1∑kj=1∑kf(i,j)=i=1∑kj=1∑kd=1∑k[gcd(i,j)==d]d2ijf(d,d)
最終可以得到
ans=d=1∑kf(d,d)i=1∑⌊dk⌋i=1∑⌊dk⌋[i⊥j]ij
重點
2
考慮求
i=1∑xj=1∑x[i⊥j]ij=2i=1∑xij=1∑i[i⊥j]j−1
除了
i=1 以外,小於等於
i 的與
i 互質的數成對存在,那麼這些數字的和就是
2φ(i)i
所以上面變成
i=1∑xφ(i)i2
即
ans=d=1∑kf(d,d)i=1∑⌊dk⌋φ(i)i2
篩出
∑i=1xφ(i)i2
維護
f(d,d) 的字首和即可
分塊即可暴力樹狀陣列就過了
# include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod(1e9 + 7);
const int maxn(4e6 + 5);
inline int Pow(ll x, int y) {
register ll ret = 1;
for (; y; y >>= 1, x = x * x % mod)
if (y & 1) ret = ret * x % mod;
return ret;
}
inline void Inc(int &x, int y) {
x = x + y >= mod ? x + y - mod : x + y;
}
int n, m, f[maxn], pr[maxn / 10], tot, sum<
相關推薦
BZOJ4815: [Cqoi2017]小Q的表格
傳送門 重點 1 1 1
[bzoj4815] [洛谷P3700] [Cqoi2017] 小Q的表格
題解 end space pac mark 一個 var 變化 我不 Description 小Q是個程序員。 作為一個年輕的程序員,小Q總是被老C欺負,老C經常把一些麻煩的任務交給小Q來處理。 每當小Q不知道如何解決時,就只好向你求助。為了完成任務,小Q需要列一個表格,表
【BZOJ4815】[CQOI2017]小Q的表格(莫比烏斯反演,分塊)
【BZOJ4815】[CQOI2017]小Q的表格(莫比烏斯反演,分塊) 題面 BZOJ 洛谷 題解 神仙題啊。 首先\(f(a,b)=f(b,a)\)告訴我們矩陣只要算一半就好了。 接下來是\(b*f(a,a+b)=(a+b)*f(a,b)\) 這個式子怎麼看呢? \[\begin{aligned}
[BZOJ4815][CQOI4815]小Q的表格 數論+分塊
-s 影響 online ans uri color www zoj 表格 題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id=4815 題目中所給條件中的(a,a+b)和(a,b)的關系很矚目。 然後大家都知道(a,b
洛咕 P3700 [CQOI2017]小Q的表格
洛咕 P3700 [CQOI2017]小Q的表格 神仙題orz 首先推一下給的兩個式子中的第二個 \(b\cdot F(a,a+b)=(a+b)\cdot F(a,b)\) 先簡單的想,\(F(a,a+b)\)和\(F(a,b)\)會相互影響 可以換一種角度想,\(F(a,b-a)\)和\(F(
bzoj 4815 [Cqoi2017]小Q的表格——反演+分塊
題目:https://www.lydsy.com/JudgeOnline/problem.php?id=4815 大概就是推式子的時候注意有兩個邊界都是 n ,考慮變成 2*... 之類的。 分塊維護 f[ ] 的字首和。很好的思路是修改一個位置後字首和陣列需要區間加,整塊地打上加法標記就行了。 自己本
[CQOI2017]小Q的表格——反演好題
zhoutb2333的題解 難得一見的新穎反演題。 一眼看可能不是反演題。 修改影響別的,很噁心。 所以考慮化簡f的聯絡式,發現和gcd有關 於是考慮用gcd來表示所有的gcd(a,b)=g的所有f(a,b)於是二維利用結合律變成了一維的問題。 修改(a,b)本質上是修改f(g,g),因為其他的數
[CQOI2017]小Q的表格(數論+分塊)
題目描述 小Q是個程式設計師。 作為一個年輕的程式設計師,小Q總是被老C欺負,老C經常把一些麻煩的任務交給小Q來處理。每當小Q不知道如何解決時,就只好向你求助。 為了完成任務,小Q需要列一個表格,表格有無窮多行,無窮多列,行和列都從1開始標號。為了完成任務,表格裡面每個格子都填了一個整數,為了方便描述,
BZOJ [Cqoi2017] 小Q的棋盤
amp pac con 深度 body for ont light ted 題解:枚舉最後在哪裏停止,然後剩下的步數/2 也就是找最大深度 枚舉終止位置算是一種思路吧 #include<iostream> #include<cstdio> #inc
bzoj 4814: [Cqoi2017]小Q的草稿【計算幾何】
double include amp per AC == urn 幾何 char //先打個50暴力,10min50分簡直美滋滋~ #include<iostream> #include<cstdio> #include<algorithm&g
Luogu 3698 [CQOI2017]小Q的棋盤
alt std left cstring head 樹形 truct getchar() return BZOJ 4813 雖然數據範圍很迷人,但是想樹形$dp$沒有前途。 先發現一個事情,就是我們可以先選擇一條鏈,最後要走到這一條鏈上不回來,走到鏈上的點每一個只需要一
BZOJ4813 CQOI2017小Q的棋盤(樹形dp)
bzoj online truct color 轉移 struct con div ons 設f[i][j]為由i號點開始在子樹內走j步最多能經過多少格點,g[i][j]為由i號點開始在子樹內走j步且回到i最多能經過多少格點,轉移顯然。 #include<ios
bzoj 4813: [Cqoi2017]小Q的棋盤
演算法:dfs(樹型DP)+貪心 難度:NOIP 題解: 先把圖中的最長鏈找到,然後分類討論: 步數使得它在鏈上跑 跑完了全圖 跑完了鏈,但是跑不完全圖 鏈上的點只經過一次,消耗1步; 其
【CQOI2017】小Q的表格
getch n) esp 分塊 [1] 一個 i++ urn begin 【CQOI2017】小Q的表格 稍加推導就會發現\(f(a,b)=a\cdot b\cdot h(gcd(a,b))\)。 初始時\(h(n)=1\)。 詢問前\(k\)行\(k\)列時我們就反演:
【BZOJ4813】【CQOI2017】小Q的棋盤(貪心)
【BZOJ4813】【CQOI2017】小Q的棋盤(貪心) 題面 BZOJ 洛谷 題解 果然是老年選手了,這種題都不會做了。。。。 先想想一個點如果被訪問過只有兩種情況,第一種是進入了這個點所在的子樹並且還要再次回到它的父親,那麼為了訪問這個點你要花費\(2\)步,另外一種是進入了這個點你不回去了,那
【二分圖】ZJOI2007小Q的遊戲
格子 scan clas ecn 輸出 每次 他還 顏色 sed 660. [ZJOI2007] 小Q的矩陣遊戲 ★☆ 輸入文件:qmatrix.in 輸出文件:qmatrix.out 簡單對比 時間限制:1 s 內存限制:128 MB 【問題描述】
重慶OI2017 小 Q 的棋盤
define print 1.0 gcd second clu urn 連通 logs 小 Q 的棋盤 時間限制: 1 Sec 內存限制: 512 MB 題目描述 小Q正在設計一種棋類遊戲。在小Q設計的遊戲中,棋子可以放在棋盤上的格點中。某些格點之間有連線,棋子
【bzoj4972】小Q的方格紙 前綴和
sample 面積 滿了 div zoj pac 需要 fine namespace 題目描述 方格紙與草稿紙一樣,都是算法競賽中不可或缺的重要工具。身經百戰的小Q自然也會隨身帶著方格紙。小Q的方格紙有n行m列,一共n*m個方格,從上到下依次標記為第1,2,...,n行,
開心的小Q 51Nod - 1742
span aps origin main const break else eof pre 開心的小Q 51Nod - 1742 交不上去,應該是可以過的吧~ 1 #include <bits/stdc++.h> 2 using namespac
[ZJOI2007] 小Q的矩陣遊戲【解題報告】
i++ 想要 文件 lose () 決定 tdi 匹配 amp 戳我 660. [ZJOI2007] 小Q的矩陣遊戲 ★★☆ 輸入文件:qmatrix.in 輸出文件:qmatrix.out 簡單對比時間限制:1 s 內存限制:128 MB 【問題