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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JZOJ 5701. 【gdoi2018 day2】第一题 谈笑风生(magic)

發(fā)布時(shí)間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 5701. 【gdoi2018 day2】第一题 谈笑风生(magic) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Description

Input

Output

Sample Input

5 7 66
4 3 2 1 5
1 2
1 5
2 3
2 4
2 5
3 4
3 5

Sample Output

6 64

Data Constraint

Hint

Solution

  • 這題的瓶頸就在于如何快速地求出邊權(quán)的大小。

  • 求出來(lái)后就可以直接二分答案+spfa了。

  • 考慮莫比烏斯反演(設(shè)邊兩端的權(quán)值分別為 n,m?(n<m)n,m(n<m)):

  • 設(shè)函數(shù)

    f(d)=i=1nj=1m(i+j)[gcd(i,j)=1]f(d)=∑i=1n∑j=1m(i+j)[gcd(i,j)=1]

  • 顯然我們要求的答案即為 f[1]f[1] ,但是直接求 ff 并不容易,于是我們?cè)僭O(shè)函數(shù)g(d)=i=1nj=1m(i+j)[d|gcd(i,j)]g(d)=∑i=1n∑j=1m(i+j)[d|gcd(i,j)]

  • 那么則有:

    g(d)=i=1?nd?f(di)g(d)=∑i=1?nd?f(di)

  • 反演得:

    f(d)=i=1?nd?g(di)?μ(i)f(d)=∑i=1?nd?g(di)?μ(i)

  • 于是 gg 可以直接求,用兩次等差數(shù)列求和來(lái)表示:(首項(xiàng)+末項(xiàng))*項(xiàng)數(shù)/2。

  • 第一次等差數(shù)列變換:g(d)=i=1?nd?di??md?+(d+?md??d)??md?2g(d)=∑i=1?nd?di??md?+(d+?md??d)??md?2

  • (原理就是 ii 的貢獻(xiàn)和 jj 的貢獻(xiàn)分開算,jj 的貢獻(xiàn)滿足等差數(shù)列的形式)

  • 第二次等差數(shù)列變換:g(d)=(d+?md??d)??nd???md?2+(d??md?+d??nd???md?)??nd?2g(d)=(d+?md??d)??nd???md?2+(d??md?+d??nd???md?)??nd?2

    g(d)=d?(2+?nd?+?md?)??nd???md?2g(d)=d?(2+?nd?+?md?)??nd???md?2

  • 原理也是一樣,帶 ii 的項(xiàng)滿足等差數(shù)列的形式,而后面的常數(shù)項(xiàng)先提出來(lái)。

  • 于是我們可以表示出 f(d)f(d) ,即:

    f(d)=i=1?nd?g(di)?μ(i)f(d)=∑i=1?nd?g(di)?μ(i)f(d)=i=1?nd?di?(2+?ndi?+?mdi?)??ndi???mdi?2?μ(i)f(d)=∑i=1?nd?di?(2+?ndi?+?mdi?)??ndi???mdi?2?μ(i)

  • 那我們要求的 f(1)?(d=1)f(1)(d=1) 就能長(zhǎng)成這樣:

    f(1)==i=1ni?(2+?ni?+?mi?)??ni???mi?2?μ(i)f(1)==∑i=1ni?(2+?ni?+?mi?)??ni???mi?2?μ(i)

  • 對(duì)于 ?ni??ni??mi??mi? 這樣的形式我們都可以分塊解決(值最多只有 O(n??+m??)O(n+m) 種)。

  • 同時(shí)維護(hù)一個(gè)前綴和 pre[i]pre[i] 即可:

    pre[i]=j=1ij?μ(j)pre[i]=∑j=1ij?μ(j)

  • 這樣分塊計(jì)算時(shí)就可以把值相同的一段段算了。

  • 于是我們就快速地求出了邊權(quán),剩下的二分+spfa就很簡(jiǎn)單了。

  • 總時(shí)間復(fù)雜度 O(m?(Ax???+Ay???)+km?log?T)O(m?(Ax+Ay)+km?logT)

Code

#include<cstdio> #include<cstring> #include<algorithm> #include<cctype> using namespace std; typedef long long LL; const int N=1e4+5; int n,m,tot; LL T,ans; int first[N],nex[N<<2],en[N<<2]; LL w[N<<2]; int a[N],q[N*10],f[N],miu[N],pre[N]; bool bz[N]; LL dis[N]; inline int read() {int X=0,w=0; char ch=0;while(!isdigit(ch)) w|=ch=='-',ch=getchar();while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();return w?-X:X; } inline int min(int x,int y) {return x<y?x:y; } inline void insert(int x,int y,LL z) {nex[++tot]=first[x];first[x]=tot;en[tot]=y;w[tot]=z; } inline bool check(LL val) {memset(dis,60,sizeof(dis));memset(bz,false,sizeof(bz));int l=dis[1]=0,r=q[1]=1;while(l<r){if(dis[n]<=T) return true;int x=q[++l];bz[x]=false;for(int i=first[x];i;i=nex[i]){LL vv=w[i]-val<0?0:w[i]-val;if(dis[x]+vv<dis[en[i]]){dis[en[i]]=dis[x]+vv;if(!bz[en[i]]) bz[q[++r]=en[i]]=true;}}}return dis[n]<=T; } inline bool getans(LL val) {memset(dis,60,sizeof(dis));memset(bz,false,sizeof(bz));int l=dis[1]=0,r=q[1]=1;while(l<r){int x=q[++l];bz[x]=false;for(int i=first[x];i;i=nex[i]){LL vv=w[i]-val<0?0:w[i]-val;if(dis[x]+vv<dis[en[i]]){dis[en[i]]=dis[x]+vv;if(!bz[en[i]]) bz[q[++r]=en[i]]=true;}}} } int main() {freopen("magic.in","r",stdin);freopen("magic.out","w",stdout);n=read(),m=read();scanf("%lld",&T);for(int i=1;i<=n;i++) a[i]=read();miu[1]=pre[1]=1;for(int i=2;i<N;i++){if(!bz[i]){f[++f[0]]=i;miu[i]=-1;}for(int j=1;j<=f[0] && i*f[j]<N;j++){bz[i*f[j]]=true;if(i%f[j]==0){miu[i*f[j]]=0;break;}miu[i*f[j]]=-miu[i];}pre[i]=pre[i-1]+miu[i]*i;}for(int i=1;i<=m;i++){int x=read(),y=read();int vx=a[x],vy=a[y];if(vx>vy) swap(vx,vy);LL sum=0;for(int j=1,p;j<=vx;j=p+1){p=min(vx/(vx/j),vy/(vy/j));int xx=vx/p,yy=vy/p;sum+=(LL)xx*yy*(xx+yy+2)/2*(pre[p]-pre[j-1]);}insert(x,y,sum);insert(y,x,sum);}LL l=0,r=1e18;while(l<=r){LL mid=l+r>>1;if(check(mid)){ans=mid;r=mid-1;}else l=mid+1;}getans(ans);printf("%lld %lld",ans,dis[n]);return 0; } 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的JZOJ 5701. 【gdoi2018 day2】第一题 谈笑风生(magic)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一区二区在线视频观看 | 色综合99| 少妇激情在线 | 国产成人三级一区二区在线观看一 | 黄色av电影在线观看 | 国产农村妇女毛片精品 | 亚洲第三十七页 | 亚洲欧美一区二区在线观看 | 国产综合区 | 亚洲精品成a人 | 强伦人妻一区二区三区 | 人人cao | 嫩草免费视频 | 中文字幕一区二区在线观看 | 黄色小网站入口 | 久操免费视频 | 久久精品久久精品久久 | 久热网站 | www.黄色大片 | 日本在线视频www | 国产成人无码aa精品一区 | 色噜噜狠狠一区二区 | 亚洲区自拍 | av一级在线 | 粉嫩aⅴ一区二区三区四区五区 | 午夜av导航| 成年人免费大片 | 欧美熟妇交换久久久久久分类 | 欧美国产一区二区在线观看 | 欧美黑人啪啪 | 国产精品熟女视频 | 欧洲精品在线播放 | 久久久久亚洲av成人网人人软件 | 9999视频| 69精品久久久久久久 | 成年在线观看视频 | 国产永久免费无遮挡 | 中文字幕 日韩有码 | 免费福利小视频 | 天天干天天拍 | 免费在线观看一区二区三区 | 99riAv国产精品无码鲁大师 | 日本一区中文 | 亚洲免费三区 | 性色av蜜臀av| 欧美日韩国产高清视频 | 免费观看成人在线视频 | 成人精品在线视频 | 亚洲天堂aaa | 午夜aaa片一区二区专区 | 国产精品国产三级国产aⅴ无密码 | 二区三区偷拍浴室洗澡视频 | 成人日b视频 | 国产日韩欧美中文字幕 | 成人免费视频国产免费 | 久草久草久草 | 国产三级在线免费观看 | 国产成人无码精品久久久性色 | 人人看超碰 | 亚洲第一二区 | 在线观看网址你懂的 | 免费日韩一级片 | 国产日韩精品一区二区 | 欧美性猛交xxx乱大交3蜜桃 | 精品国自产在线观看 | 亚洲精品中文字幕成人片 | 亚洲AV无码成人片在线观看 | 欧美另类精品xxxx孕妇 | 在线播放不卡 | 爱爱精品 | 性感美女一区 | 最新黄色av网址 | 91在线精品观看 | 在线一级视频 | 久久天天操 | 97人人爽人人爽人人爽人人爽 | 小毛片网站 | 亚洲国产精品欧美久久 | 人妻精品无码一区二区 | 久色成人网 | 亚洲社区在线观看 | 777视频在线观看 | 香蕉视频国产 | 久久99精品国产麻豆91樱花 | 亚洲高清在线观看 | 91色九色 | 色猫咪av在线 | 午夜爽爽影院 | 99热国产在线 | www九九热 | 看片在线 | 久久亚洲影院 | 香蕉久久网站 | 手机看片日韩久久 | 国产女上位 | 高潮白浆女日韩av免费看 | 欧美无砖砖区免费 | 午夜欧美在线 | 91综合久久 |