题解 CF916C
题目大意:
要求构造一张图,并让该图满足以下条件:
- 有 \(n\) 个点,\(m\) 条边。
- 每条边的边权范围是 \([1,10^9]\)。
- 图中从 \(1\) 到 \(n\) 的最短路径长度是个质数。
- 最小生成树的边权和为质数。
- 没有重边和自环。
题目分析:
先用质数筛筛一遍,然后因为与生成树相关,所以不难想到先构造一颗树,然后在树上添加边权为 \(+\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的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- C# HttpClient请求gzip
//设置HttpClientHandler的AutomaticDecompression var handler = new HttpClientHandler() { AutomaticDecomp ...
- QLabel标签快捷键的使用
1 from PyQt5.QtWidgets import * 2 import sys 3 4 class QlabelDemo(QDialog): 5 def __init__(self): 6 ...
- 代码随想录算法训练营第四天|力扣24.两两交换链表节点、力扣19.删除链表的倒数第N个结点、力扣面试02.07链表相交、力扣142.环形链表
两两交换链表中的节点(力扣24.) dummyhead .next = head; cur = dummyhead; while(cur.next!=null&&cur.next.ne ...
- [jenkins]连接git仓库
连接gitlab 在jenkins添加全局凭据,类型为"ssh username with private key",填写git用户名和ssh私钥信息(注意是git客户端所在机器的 ...
- 解决win10/ubuntu端口占用问题
win10解决方案 首先打开cmd命令行 命令行里输入 netstat -ano|findstr 被占用端口号 然后可以看到占用该端口号的pid 输入taskkill -f -pid pid号即可 u ...
- Web通用漏洞--SSRF
Web通用漏洞--SSRF 漏洞简介 SSRF(Server-Side Request Forgery:服务器端请求伪造) 一种由攻击者构造形成由服务端发起请求的一个安全漏洞; 一般情况下,SSRF攻 ...
- xshell批量新建会话
1,xshell的会话形式就是文件夹和文件,我们只需要修改文件名称即可,但是一个个弄很麻烦,可以利用这个程序来批量新建(程序很烂,但能用) 基于python编写,文件处理 --> 文件下载 提取 ...
- API接口设计规范
说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法以及规范来保证传输的安全性呢? 下面我们 ...
- xlsx和path的运用
从后端获取Excel模板 app.get('/api/download-template', (req, res) => { const templatePath = path.join(__d ...
- Java实践项目 - 用户登录
Smiling & Weeping ----以花祈愿,祝你平安 当用户输入用户名和密码将数据提交给数据库进行查询,如果存在对应的用户名和密码,则表示登陆成功,登录成功之后跳转到系统的主页就是i ...