日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[CodeForces1603D] Artistic Partition(四边形不等式 + 决策单调性优化dp + 分治 + 线性筛 + 数论分块)

發布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [CodeForces1603D] Artistic Partition(四边形不等式 + 决策单调性优化dp + 分治 + 线性筛 + 数论分块) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

problem

codeforces

對于給定的正整數 l≤l\leql,定義 c(l,r)c(l,r)c(l,r) 為滿足下列條件的正整數對 (i,j)(i,j)(i,j) 的數量:

  • l≤i≤j≤rl\leq i\leq j\leq rlijr
  • gcd?(i,j)≥l\gcd(i,j)\geq lgcd(i,j)l

給定正整數 k≤nk\leq nkn

對所有滿足 0=x1<x2<?<xk<xk+1=n0=x1<x2<?<xk<xk+1=n0=x1<x2<?<xk<xk+1=n 的整數序列 (x1,...,xk+1)(x_1,...,x_{k+1})(x1?,...,xk+1?)

計算 ∑i=1kc(xi+1,xi+1)\sum_{i=1}^kc(x_i+1,x_{i+1})i=1k?c(xi?+1,xi+1?) 的最小值。

你需要回答 TTT 組詢問。

對全部數據,1≤T≤3×1051\leq T\leq 3\times 10^51T3×1051≤k≤n≤1051\leq k\leq n\leq 10^51kn105

solution

先設 f(i,k):f(i,k):f(i,k): 枚舉到 iii 一共劃分了 kkk 個組的最小值。

則有轉移 f(i,k)=min?j≤i{f(j?1,k?1)+c(j,i)}f(i,k)=\min_{j\le i}\Big\{f(j-1,k-1)+c(j,i)\Big\}f(i,k)=minji?{f(j?1,k?1)+c(j,i)}

但遺憾的是,時間空間雙雙起飛,而且空間并不能滾動掉。

不妨挖掘一下 c(l,r)c(l,r)c(l,r) 的性質:

  • ovservation1:\text{ovservation1}:ovservation1: c(l,r)≥r?l+1c(l,r)\ge r-l+1c(l,r)r?l+1。顯然至少每個 i∈[l,r],(i,i)i\in[l,r],(i,i)i[l,r],(i,i) 點對就能提供一次貢獻。
  • observation2:c(i,2i?1)=i\text{observation2}:c(i,2i-1)=iobservation2:c(i,2i?1)=i。顯然 [i,2i?1][i,2i-1][i,2i?1] 中的任意兩個數的 gcd?<i\gcd<igcd<i

基于以上兩個觀察,不難得出當 n<2kn<2^kn<2k 時,答案一定為 nnn

因為我們有足夠多的組數可以分成形如 c(i,2i?1)c(i,2i-1)c(i,2i?1) 的形式。

所以我們狀態設計的第二維就可以降成 log?\loglog 級別。空間問題已經被解決了。

接下來考慮時間復雜度,其直接掛鉤于優化 c(l,r)c(l,r)c(l,r) 的計算。
c(l,r)=∑i=lr∑j=ir[gcd?(i,j)≥l]=∑d=lr∑i=lr∑j=ir[gcd?(i,j)=d]=∑d=lr∑i=?ld??rd?∑j=i?rd?[gcd?(i,j)=1]=∑d=lr∑i=1?rd?∑j=i?rd?[gcd?(i,j)=1]=∑d=lr∑j=1?rd?∑i=1j[gcd?(i,j)=1]=∑d=lr∑i=1?rd?φ(i)c(l,r)=\sum_{i=l}^r\sum_{j=i}^r[\gcd(i,j)\ge l]=\sum_{d=l}^r\sum_{i=l}^r\sum_{j=i}^r[\gcd(i,j)=d]\\ =\sum_{d=l}^r\sum_{i=\lceil\frac{l}ozvdkddzhkzd\rceil}^{\lfloor\frac rd\rfloor}\sum_{j=i}^{\lfloor\frac rd\rfloor}[\gcd(i,j)=1]=\sum_{d=l}^r\sum_{i=1}^{\lfloor\frac rd\rfloor}\sum_{j=i}^{\lfloor\frac rd\rfloor}[\gcd(i,j)=1]\\ =\sum_{d=l}^r\sum_{j=1}^{\lfloor\frac rd\rfloor}\sum_{i=1}^j[\gcd(i,j)=1]=\sum_{d=l}^{r}\sum_{i=1}^{\lfloor\frac rd\rfloor}\varphi(i) c(l,r)=i=lr?j=ir?[gcd(i,j)l]=d=lr?i=lr?j=ir?[gcd(i,j)=d]=d=lr?i=?dl???dr???j=i?dr???[gcd(i,j)=1]=d=lr?i=1?dr???j=i?dr???[gcd(i,j)=1]=d=lr?j=1?dr???i=1j?[gcd(i,j)=1]=d=lr?i=1?dr???φ(i)
S(n)=∑i=1nφ(i)S(n)=\sum_{i=1}^n\varphi(i)S(n)=i=1n?φ(i),即 φ(i)\varphi(i)φ(i) 的前綴和。則 c(l,r)=∑i=lrS(?ri?)c(l,r)=\sum_{i=l}^rS(\lfloor\frac ri\rfloor)c(l,r)=i=lr?S(?ir??)

O(n)O(n)O(n) 線性篩預處理 φ(i),S(i)\varphi(i),S(i)φ(i),S(i) 后,可以數論分塊做到 O(r?l+1)O(\sqrt{r-l+1})O(r?l+1?) 計算。

考慮進一步地優化轉移。

kkk 只與 k?1k-1k?1 掛鉤。所以狀態轉移的時候不妨先枚舉 kkk 再枚舉 iii

對于固定的 kkk,我們簡化內層轉移寫成 f(i)=min?j≤i{f(j?1)+c(j,i)}f(i)=\min_{j\le i}\Big\{f(j-1)+c(j,i)\Big\}f(i)=minji?{f(j?1)+c(j,i)}

看見這種形式的轉移方程,我們 打表驗證 大膽猜測是決策單調性的。

  • 證明 c(l,r)c(l,r)c(l,r) 區間包含單調性。

    ?l≤l′≤r′≤r\forall\ l\le l'\le r'\le r??llrrc(l′,r′)≤c(l,r)c(l',r')\le c(l,r)c(l,r)c(l,r)。根據 c(l,r)c(l,r)c(l,r) 的定義顯然。

  • 證明 c(l,r)c(l,r)c(l,r) 滿足四邊形不等式(交叉小于包含)。

    ?l1<l2<r1<r2\forall\ l_1<l_2<r_1<r_2??l1?<l2?<r1?<r2?c(l1,r1)+c(l2,r2)≤c(l1,r2)+c(l2,r1)c(l_1,r_1)+c(l_2,r_2)\le c(l_1,r_2)+c(l_2,r_1)c(l1?,r1?)+c(l2?,r2?)c(l1?,r2?)+c(l2?,r1?)
    c(l1,r2)+c(l2,r1)=∑i=l1r2S(?r2i?)+∑i=l2r1S(?r1i?)=∑i=l1l2?1S(?r2i?)+∑i=l2r2S(?r2i?)+∑i=l1r1S(?r1i?)?∑i=l1l2?1S(?r1i?)=∑i=l1l2?1(S(?r2i?)?S(?r1i?))+∑i=l2r2S(?r2i?)+∑i=l1r1S(?r1i?)=∑i=l1l2?1(S(?r2i?)?S(?r1i?))+c(l2,r2)+c(l1,r1)c(l_1,r_2)+c(l_2,r_1)=\sum_{i=l_1}^{r_2}S(\lfloor\frac{r_2}{i}\rfloor)+\sum_{i=l_2}^{r_1}S(\lfloor\frac{r_1}{i}\rfloor)\\ =\sum_{i=l_1}^{l_2-1}S(\lfloor\frac{r_2}{i}\rfloor)+\sum_{i=l_2}^{r_2}S(\lfloor\frac{r_2}{i}\rfloor)+\sum_{i=l_1}^{r_1}S(\lfloor\frac{r_1}{i}\rfloor)-\sum_{i=l_1}^{l_2-1}S(\lfloor\frac{r_1}{i}\rfloor)\\ =\sum_{i=l_1}^{l_2-1}\Big(S(\lfloor\frac{r_2}{i}\rfloor)-S(\lfloor\frac{r_1}{i}\rfloor)\Big)+\sum_{i=l_2}^{r_2}S(\lfloor\frac{r_2}{i}\rfloor)+\sum_{i=l_1}^{r_1}S(\lfloor\frac{r_1}{i}\rfloor)\\ =\sum_{i=l_1}^{l_2-1}\Big(S(\lfloor\frac{r_2}{i}\rfloor)-S(\lfloor\frac{r_1}{i}\rfloor)\Big)+c(l_2,r_2)+c(l_1,r_1) c(l1?,r2?)+c(l2?,r1?)=i=l1?r2??S(?ir2???)+i=l2?r1??S(?ir1???)=i=l1?l2??1?S(?ir2???)+i=l2?r2??S(?ir2???)+i=l1?r1??S(?ir1???)?i=l1?l2??1?S(?ir1???)=i=l1?l2??1?(S(?ir2???)?S(?ir1???))+i=l2?r2??S(?ir2???)+i=l1?r1??S(?ir1???)=i=l1?l2??1?(S(?ir2???)?S(?ir1???))+c(l2?,r2?)+c(l1?,r1?)
    顯然 ∑i=l1l2?1(S(?r2i?)?S(?r1i?))≥0\sum_{i=l_1}^{l_2-1}\Big(S(\lfloor\frac{r_2}{i}\rfloor)-S(\lfloor\frac{r_1}{i}\rfloor)\Big)\ge0i=l1?l2??1?(S(?ir2???)?S(?ir1???))0,所以 $ c(l_1,r_2)+c(l_2,r_1)\ge c(l_1,r_1)+c(l_2,r_2)$ 得證。

所以 f(i)f(i)f(i) 是具有決策點單調的性質的。經典 1D1D\text{1D1D}1D1D 類單調性優化。

  • 證明 f(i)f(i)f(i) 具有決策單調性。

    即設 g(i)g(i)g(i)iii 的最佳轉移決策點,則 ?j<ig(j)≤g(i)\forall_{j<i}\ g(j)\le g(i)?j<i??g(j)g(i)

    y<x<j<iy<x<j<iy<x<j<i,且 f(j)f(j)f(j) 的最佳決策點為 xxx。則有:

    • f(x?1,j)+c(x,j)≤f(y?1,j)+c(y,j)f(x-1,j)+c(x,j)\le f(y-1,j)+c(y,j)f(x?1,j)+c(x,j)f(y?1,j)+c(y,j)
    • c(y,j)+c(x,i)≤c(y,i)+c(x,j)c(y,j)+c(x,i)\le c(y,i)+c(x,j)c(y,j)+c(x,i)c(y,i)+c(x,j)

    兩式相加有:f(x?1)+c(x,j)+c(y,j)+c(x,i)≤f(y?1)+c(y,j)+c(y,i)+c(x,j)f(x-1)+c(x,j)+c(y,j)+c(x,i)\le f(y-1)+c(y,j)+c(y,i)+c(x,j)f(x?1)+c(x,j)+c(y,j)+c(x,i)f(y?1)+c(y,j)+c(y,i)+c(x,j)

    化簡后有:f(x?1)+c(x,i)≤f(y?1)+c(y,i)f(x-1)+c(x,i)\le f(y-1)+c(y,i)f(x?1)+c(x,i)f(y?1)+c(y,i)

    所以對于 iii 而言,最佳決策點選 xxx 一定優于/不劣于選 yyy

那么我們就對于外層枚舉的每一個 kkk,跑決策點的分治。

(l,r,L,R)(l,r,L,R)(l,r,L,R) :處理 i∈[l,r]i\in[l,r]i[l,r] 的最優決策點落在 [L,R][L,R][L,R] 區間內。

mid=l+r2mid=\frac{l+r}2mid=2l+r?,先算出 c(R+1,mid)c(R+1,mid)c(R+1,mid),然后 c(i,mid)=c(i+1,mid)+S(?midi?)c(i,mid)=c(i+1,mid)+S(\lfloor\frac{mid}{i}\rfloor)c(i,mid)=c(i+1,mid)+S(?imid??)

再從 min?(mid,R)\min(mid,R)min(mid,R) 開始 →L\rightarrow LL 枚舉 midmidmid 的最佳決策點。

因為最佳決策點編號必須小于自己編號。

再根據 midmidmid 分成左右并把決策點區間分成左右。

復雜度額額額,約莫 O(n+T+knnlog?n)O(n+T+kn\sqrt{n}\log n)O(n+T+knn?logn)

code

#include <bits/stdc++.h> using namespace std; #define int long long #define maxn 100005 int T, n, cnt; int prime[maxn], phi[maxn], vis[maxn], S[maxn]; int f[maxn][20];void sieve( int n = 1e5 ) {phi[1] = 1;for( int i = 2;i <= n;i ++ ) {if( ! vis[i] ) prime[++ cnt] = i, phi[i] = i - 1;for( int j = 1;j <= cnt and i * prime[j] <= n;j ++ ) {vis[i * prime[j]] = 1;if( i % prime[j] == 0 ) {phi[i * prime[j]] = phi[i] * prime[j];break;}else phi[i * prime[j]] = phi[i] * phi[prime[j]];}}for( int i = 1;i <= n;i ++ ) S[i] = S[i - 1] + phi[i]; }int calc( int l, int r ) {int ans = 0;for( int i;l <= r;l = i + 1 ) {i = min( r / ( r / l ), r );ans += S[r / l] * ( i - l + 1 );}return ans; }void solve( int l, int r, int L, int R, int k ) {if( l > r ) return;int mid = l + r >> 1;int sum = calc( R + 1, mid );int ans = 1e18, pos;for( int i = min( R, mid );i >= L;i -- ) {sum += S[mid / i];if( sum + f[i - 1][k - 1] <= ans )ans = sum + f[i - 1][k - 1], pos = i;}f[mid][k] = ans;solve( l, mid - 1, L, pos, k );solve( mid + 1, r, pos, R, k ); }signed main() {for( int i = 1;i <= 1e5;i ++ ) f[i][1] = i * (i + 1) >> 1;sieve();for( int k = 2;k <= 17;k ++ ) solve( 1, 1e5, 1, 1e5, k );scanf( "%lld", &T );while( T -- ) {int k;scanf( "%lld %lld", &n, &k );if( k > 17 or (1 << k) > n ) printf( "%lld\n", n );else printf( "%lld\n", f[n][k] ); }return 0; }

總結

以上是生活随笔為你收集整理的[CodeForces1603D] Artistic Partition(四边形不等式 + 决策单调性优化dp + 分治 + 线性筛 + 数论分块)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 九九视屏 | 粉嫩av一区二区三区四区五区 | 国产免费无码XXXXX视频 | 久久午夜无码鲁丝片 | 永久免费精品视频 | 麻豆免费视频 | 91av不卡 | 玩日本老头很兴奋xxxx | 黄网站免费入口 | 天天曰 | 成人区人妻精品一区二 | 精品一二三区久久aaa片 | 波多野结衣免费观看视频 | 狠狠干夜夜骑 | 精品在线播放 | 小珊的性放荡羞辱日记 | 亚洲天堂不卡 | 免费在线看黄色 | 久草福利| 国产精品成人一区二区三区 | 国产黄视频在线观看 | 日韩在线91 | 无码少妇一区二区三区 | 亚洲欧美日韩精品永久在线 | 亚洲精品在线一区二区 | 日韩在线免费观看视频 | 国产成人精品一区二区三区在线 | а√天堂资源在线 | 国产a∨精品一区二区三区仙踪林 | 亚洲激情影院 | 国产一区二区三区四区五区在线 | 伊人中文字幕在线 | 国产一区二区三区影视 | 日韩一区二区视频 | 97色伦影院 | 亚洲理论在线观看 | 亚洲精品aaaa | 日日天天干 | 黄色网页观看 | 成人精品一区二区三区在线 | 色婷婷精品久久二区二区密 | 91视频爱爱 | 精品午夜福利在线观看 | 天堂а√在线最新版中文在线 | 在线免费黄色网址 | 日韩精品一二三区 | 女人舌吻男人茎视频 | 日本性xxxxx 免费毛片视频网站 | 成人久久18免费网站图片 | 国产精品第7页 | 亚洲美女操 | 日韩精品一区二区亚洲av观看 | 黄色在线观看免费视频 | 毛片久久久久 | 欧美日韩中文在线视频 | 秘密爱大尺度做爰呻吟 | 日韩一区二区三区在线观看 | 欧美性色黄大片手机版 | 亚洲色图吧 | 97超碰资源站| 天堂素人 | 蜜桃久久久aaaa成人网一区 | 国产精品2020 | 天降女子在线 | 狠狠狠狠狠狠干 | 精品视频一区在线观看 | av黄色天堂 | 日本在线免费看 | 娇小萝被两个黑人用半米长 | 黄色三及 | 在线播放无码后入内射少妇 | 亚洲久久综合 | 亚洲精品短视频 | 日韩在线视频观看 | 国产欧美在线观看 | 色七七亚洲 | 少妇人禽zoz0伦视频 | 爆操老女人 | 中文字幕丰满乱子伦无码专区 | 天堂av亚洲av国产av电影 | 日韩最新在线 | 黄色av片三级三级三级免费看 | 久久久久久久久久久91 | 黄色亚洲网站 | 领导揉我胸亲奶揉下面 | 公肉吊粗大爽色翁浪妇视频 | 午夜电影一区二区 | 男女爽爽爽 | 日韩av在线天堂 | 久久av无码精品人妻系列试探 | 国产天堂一区 | a一级黄色 | 女的高潮流时喷水图片大全 | av第一区| 国产欧美一区二区三区沐欲 | 韩国黄色av | 成人av动漫| 国产www视频 | 国产精品播放 |