📌  相关文章
📜  制作完整图所需的给定类型的最少操作

📅  最后修改于: 2021-09-16 11:02:13             🧑  作者: Mango

给定N 个顶点,其中N偶数。最初,任何顶点之间都没有边。
您可以执行如下所示的操作:

  • 在单个操作中,总节点可以分为两组,并且可以为uv 的所有可能值绘制边(u,v) ,使得uv都属于不同的组。

任务是找到将这些顶点转换为完整图所需的最小给定操作数。
例子:

方法:当每对顶点之间都有一条边时,一个图将被称为完全图。这里的问题可以通过分而治之的方法来解决。为了执行最少数量的操作,将顶点分成两组,每组有N / 2个顶点并绘制所有可能的边。现在观察我们必须在现在在同一组中的顶点之间创建边。所以我们将把它们分成两半,并将它们放在不同的组中。
这些步骤将重复进行,直到所有边都被绘制,即最大⌈ log2(N) ⌉次,因为操作会将边分成相等大小的两半。
下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
 
// Function to return
// the minimum number of steps required
int minOperations(int N)
{
    double x = log2(N);
 
    int ans = ceil(x);
 
    return ans;
}
 
// Driver Code
int main()
{
    int N = 10;
    cout << minOperations(N);
 
    return 0;
}


Java
// Java implementation of the approach
 
class GFG
{
     
    // Function to return the minimum
    // number of steps required
    static int minOperations(int N)
    {
        double x = Math.log(N) / Math.log(2);
     
        int ans = (int)(Math.ceil(x));
     
        return ans;
    }
     
    // Driver Code
    public static void main(String[] args)
    {
        int N = 10;
        System.out.println(minOperations(N));
    }
}
 
// This code is contributed by Ryuga


Python3
# Python 3 implementation of the approach
from math import log2, ceil
 
# Function to return the minimum
# number of steps required
def minOperations(N):
    x = log2(N)
 
    ans = ceil(x)
 
    return ans
 
# Driver Code
if __name__ == '__main__':
    N = 10
    print(minOperations(N))
 
# This code is contributed by
# Surendra_Gangwar


C#
// C# implementation of the approach
using System;
class GFG
{
     
// Function to return the minimum
// number of steps required
static int minOperations(int N)
{
    double x = Math.Log(N, 2);
 
    int ans = (int)(Math.Ceiling(x));
 
    return ans;
}
 
// Driver Code
static void Main()
{
    int N = 10;
    Console.WriteLine(minOperations(N));
}
}
 
// This code is contributed by mits


PHP


Javascript


输出:
4

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程