Loading

题解:P16941 「LAOI-18」Locus

容易发现最优解法一定是把一个边分割。
于是想分割哪个边?
题目中给的是两个互不为倍数的点连一条边,所以只需要找倍数最多的点的个数即可。
容易知道,一个数越小,那么它在一个固定区间中的倍数最多,因此我们只需要把 \(3\) 单独分为一个子集即可。
不与 \(3\) 连点的节点数字就是 \(3\) 的倍数,共有 \(\lfloor{\frac{n}{3}}\rfloor\) 个,所以答案就是总点数减去不与 \(3\) 连点的节点个数,即 \(n-2-\lfloor{\frac{n}{3}}\rfloor\),直接输出即可。

#include<bits/stdc++.h>
using namespace std;
long long n;
int main(){
    cin>>n;
    cout<<n-2-n/3;
    return 0;
}
posted @ 2026-06-26 07:24  heffo_hard  阅读(11)  评论(0)    收藏  举报