CodeForces - 1009D Relatively Prime Graph

题面在这里!

直接暴力找点对就行了,可以证明gcd=1是比较密集的,所以复杂度略大于 O(N log N)

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;

int gcd(int x,int y){ return y?gcd(y,x%y):x;}

int n,m,u[N+5],v[N+5];

int main(){
	scanf("%d%d",&n,&m);
	if(n-1>m){ puts("Impossible"); return 0;}
	for(int i=2;i<=n;i++) u[m]=i,v[m--]=i-1;
	for(int i=3;i<=n&&m;i++)
	    for(int j=i-2;j&&m;j--) if(gcd(i,j)==1) u[m]=i,v[m--]=j;
	if(m){ puts("Impossible"); return 0;}
	puts("Possible");
	for(int i=1;u[i];i++) printf("%d %d\n",u[i],v[i]);
	return 0;
}

  

原文地址:https://www.cnblogs.com/JYYHH/p/9313594.html

时间: 2024-08-10 23:50:18

CodeForces - 1009D Relatively Prime Graph的相关文章

Codeforces 459E Pashmak and Graph(dp+贪心)

题目链接:Codeforces 459E Pashmak and Graph 题目大意:给定一张有向图,每条边有它的权值,要求选定一条路线,保证所经过的边权值严格递增,输出最长路径. 解题思路:将边按照权值排序,每次将相同权值的边同时加入,维护每个点作为终止点的最大长度即可. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 3

Codeforces 1178D. Prime Graph

传送门 首先每个点至少要有两条边连接 那么容易想到先保证这一点然后再慢慢加边 那么先构成一个环即可:$(1,2),(2,3),(3,4)...(n,1)$ 然后考虑加边,发现一个点加一条边还是合法的,那么不妨直接 $(1,4),(2,5),(3,6)$ ,然后一旦边数为质数了就直接输出答案 那么现在问题就是能否保证在 $[n,n+\left \lfloor \frac {n-3} {2} \right \rfloor]$ 范围内一定有质数 打个表发现在 $n \in [3,1000]$ 内唯一不

codeforces 340D Bubble Sort Graph(dp,LIS)

转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud  Bubble Sort Graph Iahub recently has learned Bubble Sort, an algorithm that is used to sort a permutation with n elements a1, a2, ..., an in ascending order. He is bored of this so simple al

Codeforces 459E Pashmak and Graph

http://www.codeforces.com/problemset/problem/459/E 题意: 给出n个点,m条边的有向图,每个边有边权,求一条最长的边权上升的路径的长度. 思路:用f存边,g存点,然后排序转移,注意相同的要延迟转移 1 #include<cstdio> 2 #include<cmath> 3 #include<algorithm> 4 #include<cstring> 5 #include<iostream> 6

Codeforces 340D Bubble Sort Graph 规律+LIS

http://codeforces.com/problemset/problem/340/D 题意:给出一个n个数构成的排列,类似冒泡排序,若a[i]>a[i+1] a[i]-a[i+1]连边 并swap(a[i],a[i+1])反复操作 直到排序结束,n<=1e5,问该图构成的最大独立集大小为? 最大独立集:集合中任意两点无边相连. 直接建图显然不行,找规律:a[i]和后面比它大的都不会连边.a[i],x,y下标递增,冒泡排序,a[i]<x<y x和y不可能交换x>y 则x

Codeforces 915D Almost Acyclic Graph

题意翻译 给定一个n个顶点,m条边的有向图.你允许从其中去掉最多一条边. 你能够去掉最多一条边就让这个图无环吗?我们称一个有向图无环,当且仅当它不包含一个环(起点和终点相同的路径). 输入格式: 第一行两个正整数n,mn,m 2\le n\le 500,1\le m\le min(n(n-1),100000)2≤n≤500,1≤m≤min(n(n?1),100000) ,代表图的顶点数和边数. 接下来mm 行,每行两个数u,vu,v ,表示有一条从uu 到vv 的有向边(1\le u,v\le

Codeforces 912 E.Prime Gift (折半枚举、二分)

题目链接:Prime Gift 题意: 给出了n(1<=n<=16)个互不相同的质数pi(2<=pi<=100),现在要求第k大个约数全在所给质数集的数.(保证这个数不超过1e18) 题解: 如果暴力dfs的话肯定超时间,其实给的n数据范围最大是16是一个很奇妙的数(一般折半枚举基本上是这样的数据范围@.@-).所以想到折半枚举,把所有的质数分成两份求出每份中所有小于1e18的满足条件的数.然后二分答案,写cheak函数时遍历第一个集合,对第二个集合二分(折半枚举基本上这个套路).

Codeforces 715B. Complete The Graph 最短路,Dijkstra,构造

原文链接https://www.cnblogs.com/zhouzhendong/p/CF715B.html 题解 接下来说的“边”都指代“边权未知的边”. 将所有边都设为 L+1,如果dis(S,T) < L ,那么必然无解. 将所有边都设为 1 ,如果 dis(S,T) > L ,那么必然无解. 考虑将任意一条边的权值+1,则 dis(S,T) 会 +0 或者 +1 . 如果将所有边按照某一个顺序不断+1,直到所有边的权值都是L+1了,那么在这个过程中,dis(S,T) 是递增的,而且一定

Codeforces 716D - Complete The Graph(最短路)

题意:给定n个点,m条边,以及起点s,终点t,问你图中是否存在s->t的最短路为L,其中权值为0的可以任意修改. 思路:对给定的边分为2类,权重不为0的直接扔进去建图,权重为0的边先存起来.接着跑一遍堆优化的dij,如果dis[t]小于L,那么无论怎么修改权重0的边都没有办法凑出最短路L: 如果dis[t]=L,那么直接输出:如果dis[t]>L,则将原来事先存起来的边一条一条的加进去,权值设为1.每加一条边就跑一次dij,一旦找到dis[t]<=L,就可以终止并输出. PS:原来堆优化