1. 程式人生 > >Codeforces 1009D Relatively Prime Graph 【貪心】【復雜度分析】

Codeforces 1009D Relatively Prime Graph 【貪心】【復雜度分析】

cte prim ive 影響 大於 conn graph 限定 spa

我的代碼看起來復雜度是n^2*logn【枚舉i,j==n^2 , 判斷gcd==logn】 (n=1e5)但為什麽過了呢?

因為數據裏限定了m也是1e5級別的數

如果impossible 【及貪心完造的邊還沒有m這麽多】,那n一定很小,小到n^2 * logn可以過;

如果possible,那一定n^2還沒有枚舉完就造完m條邊,直接break了。【因為n^2枚舉完造的邊與m不是一個數量級的數】

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int u[100005],v[100005],pool;
 5 
 6 int gcd(int a,int
b){//a大於b 7 if(b==0) return a; 8 return gcd(b,a%b); 9 } 10 //connected 11 int main(){ 12 int n,m; cin>>n>>m; 13 14 if(m<n-1) { cout<<"Impossible"; return 0; } 15 16 for(int i=1;i<=n;i++){//u向v建邊不會影響其余的邊,因為只和gcd有關 17 for(int j=i+1;j<=n;j++){
18 if(pool==m) break; 19 if( gcd(j,i)==1 ) { u[++pool]=i; v[pool]=j; } 20 } 21 if(pool==m) break; 22 } 23 24 if(pool==m){ 25 cout<<"Possible"<<endl; 26 for(int i=1;i<=pool;i++) cout<<u[i]<<" "<<v[i]<<endl;
27 } 28 else cout<<"Impossible"; 29 30 return 0; 31 }

Codeforces 1009D Relatively Prime Graph 【貪心】【復雜度分析】