luogu P5560 [Celeste-B]Golden Feather

题目大意

n n n 个点的完全无向图,边 ( i , j ) (i,j) (i,j) 的权是 gcd ⁡ ( a i , a j ) \gcd (a_i,a_j) gcd(ai,aj),其中 a x = x ( x + 2 ) a_x=x(x+2) ax=x(x+2)。求最小生成树的边权之和。

解题思路

数学题。看样例直接交一发 n − 1 n-1 n1,WA。

打表。发现 n = 4 n=4 n=4 的时候是5, n = 10 n=10 n=10 的时候是11。然后剩下的貌似就是 n − 1 n-1 n1 了,过了。

#include <cstdio>
#include <cstdlib>
#include <cstring>

typedef long long ll;

ll a;
int main (){
	int T;
	scanf ("%d", &T);
	while (T--){
		scanf ("%lld", &a);
		if (4==a||10==a) printf ("%lld\n", a+1);
		else printf ("%lld\n", a-1);
	}
}

考虑证明这个结论。

n n n 变大1的时候,即加入一个新的点 n n n,我们不难想到在原来的最小生成树上加一条边。这条边要么是1,要么不是1。

如果找到一个点跟这个点互素,那么就是1;否则,如果所有的点都不跟这个点互素,那么就不是1。是什么呢,注意到1号点跟他不互素,所以是3。

怎么判断所有的点都不跟这个点互素。首先得是偶数。其次还得被3整除。观察 n ( n + 2 ) m o d    6 n(n+2)\mod6 n(n+2)mod6,显然只有0,4满足要求。

观察前面 n − 1 n-1 n1 个点 m o d    6 \mod6 mod6。偶数的情况显然满足。奇数的情况有三种, 1 × 3 , 3 × 5 , 5 × 1 1×3,3×5,5×1 1×3,3×5,5×1。带3的情况显然满足,剩下最后一种情况。

最后一种情况下,不会了。打表找规律吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值