首页 > 其他分享 >CF1178D Prime Graph 题解

CF1178D Prime Graph 题解

时间:2024-07-29 10:40:06浏览次数:4  
标签:Prime lfloor right frac 题解 rfloor 素数 Graph left

首先考虑一个问题:如果没有边数是素数的限制,应该怎么构造?

这其实很简单,把原图连成一个环即可,每个点度数为 \(2\)。


接着考虑在原图上加边,注意到 \(3\) 也是个素数,所以每次可以任意选两个度数为 \(2\) 的点连边,此时仍然符合条件。这样加边最多可以加 \(\left\lfloor\frac{n}{2}\right\rfloor\) 次。

这时就要用到一个定理:在 \(n\) 到 \(\left\lfloor\frac{3n}{2}\right\rfloor\) 中一定存在着一个素数 (证明太难了,我不会)

其实可以手推一下,在 \(1000\) 以内两个相邻的素数的差最大也就 \(20\)(\(887\) 和 \(907\))。

所以只需依次加边,直到 \(m\) 是一个素数,此时新增的边的数量不超过 \(\left\lfloor\frac{n}{2}\right\rfloor\) 条。


代码中,我选的是每次连编号为 \(i\) 和 \(i+\left\lfloor\frac{n}{2}\right\rfloor\) 的边。

#include <iostream>
#include <cstdio>
#include <bitset>
using namespace std;
int n,m;
bool f(int x)
{
    for(int i = 2;i*i <= x;i++)
        if(x%i==0)return 0;
    return 1;
}
int main()
{
    cin >> n;m = n;
    while(!f(m))m++;
    cout << m << endl;
    for(int i = 1;i <= n;i++)printf("%d %d\n",i,i%n+1);
    for(int i = 1;i <= m-n;i++)printf("%d %d\n",i,i+n/2);
    return 0;
}

标签:Prime,lfloor,right,frac,题解,rfloor,素数,Graph,left
From: https://www.cnblogs.com/max0810/p/18329598

相关文章

  • CF685E 题解
    吐槽一下,为啥这道题\(\mathcal{O}(nm)\)可以过。联考的时候做到了这道题,还一直在想更快的算法。。。然后,这联考的数据是自己出的,有\(s=t\)的情况,我反正是完全没有想到,又因为是捆绑测试,直接痛失\(100pts\)。首先考虑转化一下题目。对于一个询问\(l,r,s,t\),就相当于是让你......
  • P4468[SCOI2007]折纸-题解
    题意:有一个左下角为\((0,0)\),右上角为\((100,100)\)的正方形,给你\(n\)个有向线段和\(m\)个询问,将纸片依次按直线折叠,然后每次询问让你求出某个点上有多少层纸。分析:观察到数据范围非常小,于是可以直接对于每个询问\(\mathcal{O}(2^n)\)来求。具体的,对于每一个点,倒着枚......
  • P8540 「Wdoi-2」夜空中的 UFO 恋曲 题解
    hanghangakioi考试的时候在乱猜结论,交了几遍就过了,证明当然是赛后才想的()文中加粗部分是需要读者稍微思考一下原因的地方(不是重点)。先考虑一下样例二,将\(10^{18}\)化成二进制:\(1101...001000000000000000000\)。其实只需要知道末尾有\(18\)个\(0\)就行了,因为在\(x\)......
  • CF1906C Cursed Game 题解
    题目大意交互库有一个\(3\times3\)的01矩阵\(a\),每次询问一个\(n\timesn\)的01矩阵\(b\),交互库会返回一个\((n-2)\times(n-2)\)的01矩阵\(c\),满足:\[c_{x,y}=\bigoplus\limits_{1\lei,j\le3}\left(a_{i,j}\operatorname{AND}b_{x+i-1,y+j-1}\right......
  • 梦熊十三连测第三场题解
    T1本题考察了数论的相关知识。30pts暴力枚举每次洗牌的情况,时间复杂度为\(O(n^2)\)。60pts首先卡牌\(1\)和\(2n\)一直不动,可以不用考虑这两张牌。将位置和剩下的牌上的数字全减\(1\),那么数字为\(k\)的牌操作一次后就会到\(2k\bmod(2n-1)\)的位置。那么问题相当......
  • Maximum Glutton题解
    正常动规,但是赛时死了。分析看到\(n\)很小,但是\(X\)和\(Y\)有点大,所以状态稍微改变一下。设\(dp_{i,j}\)表示已经选到第\(j\)个,且甜度为\(i\)时咸度的最小值。转移方程为:\[dp_{j,k}=\min_{0\lek\lei,a_i\lej\leX}(dp_{j,k},dp_{j-a_i,k-1}+b_i)\]按照\(i,j......
  • CF526G Spiders Evil Plan 题解
    Description给定一棵\(n\)个节点的无根树,每条边有边权。有\(q\)次询问,每次询问给出\(x,y\),你需要选择\(y\)条树上的路径,使这些路径形成一个包含\(x\)的连通块,且连通块中包含的边权和最大。\(n,q\le10^5\),强制在线。Solution考虑只有一组询问怎么快速求答案。容......
  • 【科大讯飞笔试题汇总】2024-07-27-科大讯飞秋招提前批(研发岗)-三语言题解(Cpp/Java/
    ......
  • ABC364 DEF 题解
    ABC364DEF题解D-K-thNearest题目链接赛时想了一个(也许确实是对的)做法,但是代码太难写,一直没写出来……看了官方题解才发现正解其实也很简单……本题最关键的一点是要转换思路:与其考虑“离某个点第\(k\)近的点在哪”,不如考虑“离某个点距离不超过\(x\)的点有多少个”。......
  • 会员购项目面试题解析:高效数据抓取与异常处理
    会员购项目亮点日志记录信息协程异步抓取数据,大大提高抓取速度捕获异常,并添加重试机制源码importloggingimporttimeimportrequestsimportasyncioimportaiohttpfromaiohttpimportContentTypeErrorimportcsv#配置日志logging.basicConfig(level=logging......