题目大意:

要求构造一张图,并让该图满足以下条件:

  1. 有 \(n\) 个点,\(m\) 条边。
  2. 每条边的边权范围是 \([1,10^9]\)。
  3. 图中从 \(1\) 到 \(n\) 的最短路径长度是个质数。
  4. 最小生成树的边权和为质数。
  5. 没有重边和自环。

题目分析:

先用质数筛筛一遍,然后因为与生成树相关,所以不难想到先构造一颗树,然后在树上添加边权为 \(+\infty\) 的边。又因为要满足最短路径的长度为质数,所以方便起见,我们可以先构造一朵菊花,然后再在其上面加边即可。

时间复杂度 \(O(n+m)\)。

代码实现:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define TIME_LIMIT (time_t)2e3
#define dbg(x) cerr<<#x<<": "<<x<<endl;
#define inf (int)1e9
#define MAX_SIZE (int)2e6
bitset<MAX_SIZE>nf;
int primes[MAX_SIZE];
void primeshai(int num) {
for (int i = 2; i < num; i++) {
if (!nf[i])
primes[++primes[0]] = i; for (int j = 1; j <= primes[0] && primes[j]*i <= num; j++) {
nf[i * primes[j]] = 1; if (i % primes[j] == 0)
break;
}
}
} signed main() {
ios::sync_with_stdio(false);
#ifdef LOCAL
freopen("in.in", "r", stdin);
freopen("out.out", "w", stdout);
time_t cs = clock();
#endif
//========================================
primeshai(MAX_SIZE);
int m, n;
cin >> n >> m;
int nowsum = (n - 2) * 2;
int lastw = primes[1]; for (int i = 1; i <= primes[0] && primes[i] + nowsum < MAX_SIZE; i++) {
if (!nf[nowsum + primes[i]]) {
nowsum += primes[i];
lastw = primes[i];
break;
}
} cout << 2 << ' ' << nowsum << endl;
cout << 1 << ' ' << 2 << ' ' << lastw << endl; for (int i = 2; i < n; i++)
cout << 1 << ' ' << i + 1 << ' ' << 2 << endl; int cnt = 0;
m -= n - 1; while (cnt < m) {
for (int i = 2; i < n; i++) {
for (int j = i + 1; j <= n; j++) {
cout << i << ' ' << j << ' ' << inf << endl;
cnt++; if (cnt >= m)
break;
} if (cnt >= m)
break;
}
} //========================================
#ifdef LOCAL
fclose(stdin);
fclose(stdout);
time_t ce = clock();
cerr << "Used Time: " << ce - cs << " ms." << endl; if (TIME_LIMIT < ce - cs)
cerr << "Warning!! Time exceeded limit!!" << endl; #endif
return 0;
}

题解 CF916C的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. 使用 Dockerfile 构建生产环境镜像

    传统部署的坑: 1202 年了,如果你连 Docker 都不知道是什么,我建议买一本书看看--或者谷歌一下,博客已经写烂了. 为什么有这篇文章,是因为我在真正做容器化改造的时候,发现公司生产环境存在大 ...

  2. linux 查看进程使用的内存大小

    你可以使用 ps 命令结合 grep 命令来查看进程使用的内存大小.以下是示例代码: ps aux | grep <进程名> 这个命令会列出所有匹配 <进程名> 的进程,并显示 ...

  3. Bash 内建命令

    官方文档 Bash内建命令 查看命令是否为Bash内建命令

  4. 并发编程-CompletableFuture解析

    1.CompletableFuture介绍 CompletableFuture对象是JDK1.8版本新引入的类,这个类实现了两个接口,一个是Future接口,一个是CompletionStage接口. ...

  5. 根据图片搜索excel

    问题描述:在excel使用中,当我们用大量的excel记录图文信息的时候,如果excel过多,比如成百上千个,里面都是包含大量的图片.这个时候如果想要根据图片快速找到这张图片可能被哪些excel包含, ...

  6. FPGA按键消抖

    简介 按键 按键是输入设备,一般来说,按键在没有按下的时候是高电平:当按键按下的时候,为低电平. 在DE2-70 User Manual中 Each switch provides a high lo ...

  7. Typescript:基础语法学习(尚硅谷 李立超)

    官方文档:https://www.tslang.cn/docs/handbook/typescript-in-5-minutes.html 搭建开发环境 npm i -g typescript安装完成 ...

  8. SSL 证书过期巡检脚本 (Python 版)

    哈喽大家好,我是咸鱼 之前写了个 shell 版本的 SSL 证书过期巡检脚本 (文章:<SSL 证书过期巡检脚本>),后台反响还是很不错的 那么今天咸鱼给大家介绍一下 python 版本 ...

  9. Linux cpu 亲缘性 绑核

    前言 https://www.cnblogs.com/studywithallofyou/p/17435497.html https://www.cnblogs.com/studywithallofy ...

  10. 苹果MacOS系统傻瓜式本地部署AI绘画Stable Diffusion教程

    Stable Diffusion的部署对小白来说非常麻烦,特别是又不懂技术的人.今天分享两个一键傻瓜式安装包,对小白来说非常有用.下面两个任选一个安装就可以. 一.DiffusionBee 简单介绍 ...