jzoj5701-[gdoi2018day2]谈笑风生【莫比乌斯反演,二分,最短路】

正题


题目大意

nnn个点,每个点有一个wiw_iwimmm条边,对于一条边(x,y)(x,y)(x,y),边权为∑i=1wx∑j=1wy[gcd(i,j)==1](i+j)\sum_{i=1}^{w_x}\sum_{j=1}^{w_y}[gcd(i,j)==1](i+j)i=1wxj=1wy[gcd(i,j)==1](i+j)
选择一个最小的PPP使得所有边权减去PPP(不能小于000)使得最短路长度不超过TTT


解题思路

一道缝合题,边权要莫反算
f(x)=∑i=1n∑j=1m[gcd(i,j)==x](i+j)f(x)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==x](i+j)f(x)=i=1nj=1m[gcd(i,j)==x](i+j)
那么有F(x)=∑x∣df(d)=∑i=1⌊nx⌋∑i=1⌊mx⌋(i∗⌊nx⌋+j∗⌊mx⌋)F(x)=\sum_{x|d}f(d)=\sum_{i=1}^{\lfloor\frac{n}{x}\rfloor}\sum_{i=1}^{\lfloor\frac{m}{x}\rfloor}(i*\lfloor\frac{n}{x}\rfloor+j*\lfloor\frac{m}{x}\rfloor)F(x)=xdf(d)=i=1xni=1xm(ixn+jxm)
然后有f(x)=∑x∣dF(dx)μ(d)f(x)=\sum_{x|d}F(\frac{d}{x})\mu(d)f(x)=xdF(xd)μ(d)
f(1)=∑i=1nF(i)μ(i)f(1)=\sum_{i=1}^nF(i)\mu(i)f(1)=i=1nF(i)μ(i)
然后前面那个F(x)F(x)F(x)整除分块+等差数列求和,前面那个μ\muμ求前缀和算即可。

然后后面直接二分一下P+dijP+dijP+dij就好了。

时间复杂度O(mwi+(n+m)log⁡n)O(m\sqrt w_i+(n+m)\log n)O(mwi+(n+m)logn)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define ll long long
using namespace std;
const ll N=1e4+10,M=1e5+10;
struct node{ll to,next,w;
}a[N*4];
struct point{ll x,w;
};
bool operator<(point x,point y)
{return x.w>y.w;}
priority_queue<point> q;
ll n,m,T,tot,w[N],ls[N],f[N];
ll mu[M],pri[M],cnt;
bool v[N],vis[M];
void prime(){mu[1]=1;for(ll i=2;i<M;i++){if(!vis[i])pri[++cnt]=i,mu[i]=-1;for(ll j=1;j<=cnt&&pri[j]*i<M;j++){vis[pri[j]*i]=1;if(i%pri[j]==0)break;mu[pri[j]*i]=-mu[i];}}for(ll i=1;i<M;i++)mu[i]=mu[i]*i+mu[i-1];return;
}
ll s(ll n){return n*(n+1)/2;}
ll solve(ll n,ll m){ll ans=0;if(n>m)swap(n,m);for(ll l=1,r;l<=n;l=r+1){r=min(n/(n/l),m/(m/l));ans+=(s(n/l)*(m/l)+s(m/l)*(n/l))*(mu[r]-mu[l-1]);}return ans;
}
void addl(ll x,ll y,ll w){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].w=w;return;
}
bool check(ll p){memset(f,0x3f,sizeof(f));memset(v,0,sizeof(v));f[1]=0;q.push((point){1,0});while(!q.empty()){ll x=q.top().x,w=q.top().w;q.pop();if(v[x])continue;v[x]=1;for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to,zw=max(a[i].w-p,0ll);if(f[y]>f[x]+zw){f[y]=f[x]+zw;if(!v[y])q.push((point){y,f[y]});}}}return f[n]<=T;
}
signed main()
{freopen("magic.in","r",stdin);freopen("magic.out","w",stdout);prime();scanf("%lld%lld%lld",&n,&m,&T);for(ll i=1;i<=n;i++)scanf("%lld",&w[i]);for(ll i=1;i<=m;i++){ll x,y,val;scanf("%lld%lld",&x,&y);val=solve(w[x],w[y]);addl(x,y,val);addl(y,x,val);}ll l=0,r=1e18;while(l<=r){ll mid=(l+r)>>1;if(check(mid))r=mid-1;else l=mid+1;}check(l);printf("%lld %lld",l,f[n]);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csp-2019 复赛游记

文章目录Day0Day\ 0Day 0Day1Day\ 1Day 1Day2Day\ 2Day 2总结:csp−J:csp-J:csp−J:csp−s:csp-s:csp−s:遥远的梦想&#xff1a;Day0Day\ 0Day 0 早上&#xff0c;在运动会上乱搞一波&#xff0c;然后在10点左右到了机房&#xff0c;然后发现巨佬几枚&#xff0c;远看似在认证…

Rainbond v3.7.0:实现企业级PaaS的稳定性

Rainbond v3.7.0&#xff1a;实现企业级PaaS的稳定性Rainbond在v3.7.0版本中释出了大量平台稳定性更新&#xff0c;并在应用管理功能、安全性和系统安装三方面进行了部分优化。作为IT基础系统平台&#xff0c;Rainbond从低耦合的架构设计、高可用的部署方式、自恢复与容错的设计…

简单多边形三角化(暴力)

简单多边形三角化(暴力) 说在前面 网上流传着各种神奇的多边形三角剖分算法&#xff0c;但是讲道理&#xff0c;实现难度太高了。。。也没有搜到其他人的实现。这里写个最暴力的做法。。随机数据验证没问题&#xff0c;欢迎 hack 实现 一个简单多边形的耳朵定义为&#xff1a;如…

牛客网【每日一题】4月13号 Accumulation Degree

文章目录题目描述样例分析&#xff1a;题意&#xff1a;题解&#xff1a;代码&#xff1a;本题目传送题目树学是这个题的简易版&#xff0c;也涉及换根问题&#xff0c;可以先看看这个 树学 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768…

【二分】Distinct

Distinct 题目大意&#xff1a; 有n个军队&#xff08;有自己在x轴上的坐标&#xff09;&#xff0c;每个军队有一定的人&#xff0c;要一个坐标只有一个人&#xff0c;移动路程最大的士兵最少移动多长 原题&#xff1a; 题目描述 Daniel 正在玩一个战棋游戏。 现在 Danie…

P2839-[国家集训队]middle【主席树,二分】

正题 题目链接:https://www.luogu.com.cn/problem/P2839 题目大意 nnn个数字&#xff0c;mmm次询问给出(a,b,c,d)(a,b,c,d)(a,b,c,d)表示左端点在[a,b][a,b][a,b]中&#xff0c;右端点在[c,d][c,d][c,d]的子区间中中位数最大的值。 解题思路 显然我们需要二分一下答案midmidm…

微软把UWP定位成业务线应用程序开发平台

微软把UWP定位成传统业务线&#xff08;LOB&#xff09;应用程序开发平台&#xff0c;以使用Windows Template Studio实现快速应用程序开发为重点。但是&#xff0c;为了把LOB开发人员吸引到UWP平台&#xff0c;他们在做的事情不止这些。最初发布时&#xff0c;通用Windows平台…

牛客网【每日一题】 合集

文章目录2020年3月25日 NC50439 tokitsukaze and Soldier 牛客练习赛50-C2020年3月26日 NC13230 合并回文子串 美团2017年CodeM大赛-初赛A轮2020年3月27日 NC15553 数学考试 2018年长沙理工大学程序设计竞赛2020年3月30日 NC50528 滑动窗口 《信息学奥赛一本通》Part5.52020年3…

NBA总冠军

NBA总冠军NBA总冠军NBA总冠军 题目描述 又要考试了&#xff0c;LJW决定放松一下&#xff0c;就打开电视&#xff0c;看见篮球赛&#xff0c;他立即想到了每年的NBA总冠军队伍。由于复习紧张&#xff0c;他只记起了一部分&#xff0c;记忆的内容是正确的&#xff0c;可能不是按…

P6773-[NOI2020]命运【线段树合并,树形dp】

正题 题目链接:https://www.luogu.com.cn/problem/P6773 题目大意 nnn个点的一棵树&#xff0c;边权可以是000或111。mmm个条件(x,y)(x,y)(x,y)表示要求x,yx,yx,y之间要有边权值为111&#xff08;保证xxx是yyy的祖先&#xff09;&#xff0c;求方案数。 解题思路 考虑容斥&am…

读 《CSharp Coding Guidelines》有感

C# 编程指南前不久在 Github 上看见了一位大牛创建一个仓库&#xff1a;CSharpCodingGuidelines&#xff0c;打开之后看了一下 readme.md 相关描述&#xff0c;感觉应该很不错&#xff0c;于是就 clone 到本地拜读一下&#xff0c;这里列一些自己的笔记&#xff0c;方便日后回顾…

牛客网 【每日一题】4月10日 二分图染色(弱化版)

精讲 组合、容斥 文章目录题目&#xff1a;题意&&题解&#xff1a;&#xff1a;代码&#xff1a;题目传送题目&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 524288K&#xff0c;其他语言1048576K 64bit IO Format: %lld …

数字游戏(水博客ing / csp-J T1 / luogu 5660)

数字游戏 luogu 5660 题目大意&#xff1a; 给你一个长度为8的01串&#xff0c;分别表示你某一场比赛是否AKAKAK了&#xff0c;问你AKAKAK了几场比赛 输入样例#1 00010100输出样例#1 2输入样例#2 11111111输出样例#2 8样例解释#1 该 01 字符串中有 2 个字符 1。 样例…

P2231-[HNOI2002]跳蚤【容斥】

正题 题目链接:https://www.luogu.com.cn/problem/P2231 题目大意 求一个由[1,m][1,m][1,m]的整数组成的长度为nnn的序列使得他们的gcdgcdgcd和mmm互质。 解题思路 考虑容斥减去不合法的答案。那就是要求序列的gcdgcdgcd和mmm不互质的个数&#xff0c;那么我们依旧需要容斥计…

微软Windows Community Toolkit一览

为了满足业务线开发人员的需求&#xff0c;微软推出了Windows Community Toolkit。这个快速变化的库充当了新的UWP控件和功能的测试基础。在创建UWP之初&#xff0c;其重点目标是智能手机和平板电脑。这意味着大部分开发预算都花费在控件上&#xff0c;确保这些控件能够在有限的…

牛客网【每日一题】4月14日题目精讲 Xorto

文章目录题目描述题解&#xff1a;代码&#xff1a;扩展传送时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format:%lld 题目描述 给定一个长度为n的整数数组&#xff0c;问有多少对互不重叠的非空区…

YbtOJ#20081-[NOIP2020模拟赛B组Day8]树上排列【组合数,树形dp】

正题 题面链接:https://www.ybtoj.com.cn/contest/62/problem/3 题目大意 nnn个点的一棵树&#xff0c;每个边的边会表示一个大小关系&#xff08;如px>pyp_x>p_ypx​>py​或px<pyp_x<p_ypx​<py​&#xff09;。求有多少个排列满足所有条件。 解题思路 考…

如何简单的在 ASP.NET Core 中集成 JWT 认证?

前情提要&#xff1a;ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统文章超长预警&#xff08;1万字以上&#xff09;&#xff0c;不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包自上一篇介绍如何在 ASP.NET Core 中集成 JWT 的博文发布…

【二分】【暴力】蛋糕(gmoj 3918)

蛋糕 gmoj 3918 题目大意&#xff1a; 有一个蛋糕&#xff0c;分成n∗mn*mn∗m个单位&#xff0c;现在横竖各切三刀&#xff0c;使其分成16个矩阵&#xff0c;使价值最小的矩阵价值最大 输出样例 5 5 95998 21945 23451 99798 74083输入样例 3数据范围 40%的数据&#x…

Music Problem

文章目录题目描述题意&#xff1a;题解&#xff1a;传送时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld 题目描述 Listening to the music is relax, but for obsessive(强迫症), it …