首页 > 其他分享 >E - Ring MST(n个数裴蜀定理)

E - Ring MST(n个数裴蜀定理)

时间:2024-01-17 19:22:08浏览次数:22  
标签:typedef const int MST Ring include 裴蜀 define

E - Ring MST

有i种操作,第i种操作为选择一个数x,然后在x和(x+a[i])%N之间连边,代价为c[i],问是否能够让图联通,如果可以最小生成树的边权和是多少。

首先按照克鲁斯卡尔算法,我们肯定是按照边权从小到大连。
考虑前i种操作都操作完后的连通块个数。
若u,v在同一联通块,

\(u \equiv v+a_1*k_1+a_2*k_2+...a_i*k_i (\mod N)\)
\(u = v+a_1*k_1+a_2*k_2+...a_i*k_i+N*k_{i+1}\)
设\(d=(a_1,a_2,a_3,....a_k,N)\)
u=v+kd
\(u \equiv v (\mod d)\)
也就是有d个连通块

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<bitset>
#include<cmath>
#include<set>
#include<unordered_map>
#define fo(i,a,b) for (ll (i)=(a);(i)<=(b);(i)++)
#define fd(i,b,a) for (ll (i)=(b);(i)>=(a);(i)--)
#define mk(x,y) make_pair((x),(y))
#define A puts("Yes")
#define B puts("No")
using namespace std;
typedef double db;
typedef long long ll;
//typedef __int128 i128;
const int N=3e5+10;
//const int S=1e5+5;
//const int inf=1ll<<60;
const int inf=1<<30;
const ll mo=1e9+7;
struct node{
	ll a,e;
};
node e[N];
ll n,m,x,y;
ll gcd(ll a,ll b){
	if (!b) return a;
	return gcd(b,a%b);
}
int main()
{
//	freopen("data.in","r",stdin);
	
	scanf("%lld %lld",&n,&m);
	fo(i,1,m) scanf("%lld %lld",&e[i].a,&e[i].e);
	sort(e+1,e+m+1,[](node a,node b){
		return a.e<b.e;
	});
	
	ll dd,d,ans=0;
	
	dd=d=n;
	fo(i,1,m) {
		d=gcd(d,e[i].a);
		ans+=(dd-d)*e[i].e;
		dd=d;
	}
	
	if (d!=1) puts("-1");
	else printf("%lld\n",ans);


	return 0;
}

	
 
 

标签:typedef,const,int,MST,Ring,include,裴蜀,define
From: https://www.cnblogs.com/ganking/p/17970850

相关文章

  • [ARC169E] Avoid Boring Matches 题解
    题目链接首先考虑无解的情况,一个显然的观察是如果R的个数大于一半,那么无论如何都会出现两个R比赛的情况,小于一半时我们可以调整使得B全都在前面,显然有解。接下来问题变为找到最优可行解,但是状态的合法性不是显然的,我们先尝试判定这个问题。先考虑第一轮比赛,显然我们想让......
  • springMVC重定向和转发区别
    请求转发是浏览器一次发出请求,获取一次相应,重定向是二次。请求地址栏未变,转发地址栏变请求获取用户提交的数据,重定向不可以获取用户提交数据,但可以获取第二次由浏览器携带的数据请求转发是在服务器端内部完成的,它将请求从一个Servlet转发到另一个Servlet或JSP页面,浏览器......
  • springMVC执行流程是啥
    用户发送请求,前端控制器DIspathServlet 2.DispathcherServlet收到请求调用HanderMappingc处理映射器3.处理映射器找到具体的处理器,根据xml配置注解查找返回给dispathServlet4.DispathServlet调用HandlerAdapter处理器找到Coltrller5.controller执行完毕返回modleAndView.......
  • springMvc如何解决请求中文乱码问题
    方式一:解决get请求中文乱码问题  每次请求前用encode对url进行编码方式二:在应用服务器上配置URL编码格式,在tomcat配置文件server.xml增加encodeURL编码格式,然后重启解决post请求方式一:使用spring提供的编码过器 在web.xml文件配置编码过lu器,增加一下配置: <web-ap......
  • 0.o?让我看看怎么个事儿之SpringBoot自动配置
    学习SpringBoot自动配置之前我们需要一些前置知识点:Java注解,看完就会用学会@ConfigurationProperties月薪过三千不是银趴~是@Import!@Conditional+@Configuration有没有搞头?首先我们提出2个问题:SpringBoot是干什么的?是用来简化Spring原生的复杂的xml配置的进阶框架......
  • SpringBoot+MybatisPlus+dynamic-datasources实现连接Postgresql和mysql多数据源
    场景dynamic-datasource-spring-boot-starter实现动态数据源Mysql和Sqlserver:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/117356693SpringBoot中整合MybatisPlus快速实现Mysql增删改查和条件构造器:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail......
  • SpringSecurity系列,第四章:源码分析
    源码分析SpringSecurity的核心功能即为:认证(Authentication)、授权(Authorization)一、概览1、在SpringSecurity中,用户的认证信息主要由Authentication的实现类来保存,Authentication接口定义如下:【保存用户认证信息】publicinterfaceAuthenticationextendsPrin......
  • SpringBoot中整合MybatisPlus快速实现Mysql增删改查和条件构造器
    场景Mybatis-Plus(简称MP)是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,所以引入Mybatis-Plus不会对现有的Mybatis构架产生任何影响。MyBatis增强工具包,简化CRUD操作。启动加载XML配置时注入单表SQL操作,为简......
  • Spring Boot 自动配置机制全解析
    本篇博文旨在全面剖析SpringBoot的自动配置原理,为开发者提供深入理解其背后机制的视角。SpringBoot自动配置通过智能地推断所需配置,极大地简化了开发过程,优化了开发体验。1.SpringBoot自动配置的核心:@SpringBootApplicationSpringBoot应用的入口通常标注有@SpringBootAp......
  • Springboot项目配置多数据源,然后任意切换
    数据库信息spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job_test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghaispring.datasource.username=rootspring.datasource.password=rootspring.datasource.sec......