有准确归为一组的人团队,这样每个团队中至少要有一个人。团队的所有成员都是彼此的朋友。找到最小和最大编号。可以通过将这些朋友分组而形成的一对朋友人们正好进入团队。
例子:
Input : 5 2
Output : 4 6
For maximum no. of pairs, 1st team contains only 1 member and 2nd team contains 4 people which are friends which each other, so no. of pairs in 1st team + no. of pairs in 2nd team = 0 + 6 = total pairs = 6
For minimum no. of pairs, 1st team contains 2 members and 2nd team contains 3 people which are friends which each other, so no. of pairs in 1st team + no. of pairs in 2nd team = 1 + 3 = total pairs = 4
Input : 2 1
Output : 1 1
解释:
首先,我们必须在每个团队中安排成员来满足约束条件。所以我们剩下人们。
1.最高编号对
可以看出,最大没有。配对只能通过将所有其余成员置于同一团队中来实现。可以解释如下:
考虑2个团队,其中一个包含x人,其他包含1个人,现在我们必须在两个团队中再增加1个人,将他/她添加到x个人的团队中会增加否。 x的对数,同时将他添加到另一支队伍中只会增加No。因此,最大数量为1。对,我们必须将所有其他人员放在同一个团队中。
现在,团队分配的最大数量。对将是这样的:
因此,
例如:如果一个团队由3个人组成,则第三个人有1个和2个朋友,第二个人有1个作为朋友。因此,2 + 1 =((3-1)*(3))/ 2个朋友
2.最少编号对
现在,从相同的解释中可以看出,最小编号为。当所有人员在团队中平均分配时,可获得成对的。因此,应将剩余的nm个人分配给m个团队,以便每个团队包含(nm)/ m个人员。现在有仍剩余的人数,每队要填补1人(与上述最高人数条件相反)。
现在,团队分配的最低人数。对将是这样的:
每个团队都有成员和团队多了一名成员。
所以总没有。的对数=每个大小为m个团队的对总数 +通过在中添加1人形成的对的数量有规模的团队
C++
// CPP program to find minimum and maximum no. of pairs
#include
using namespace std;
void MinimumMaximumPairs(int n, int m)
{
int max_pairs = ((n - m + 1) * (n - m)) / 2;
int min_pairs = m * (((n - m) / m + 1) * ((n - m) / m)) / 2 +
ceil((n - m) / double(m)) * ((n - m) % m);
cout << "Minimum no. of pairs = " << min_pairs << "\n";
cout << "Maximum no. of pairs = " << max_pairs << "\n";
}
// Driver code
int main()
{
int n = 5, m = 2;
MinimumMaximumPairs(n, m);
return 0;
}
Java
//Java program to find minimum
// and maximum no. of pairs
import java.io.*;
class GFG {
static void MinimumMaximumPairs(int n, int m)
{
int max_pairs = ((n - m + 1) * (n - m)) / 2;
int min_pairs = m * (((n - m) / m + 1) * ((n - m) / m)) / 2 +
(int)Math.ceil((double)((n - m) /
(double)(m))) * ((n - m) % m);
System.out.println("Minimum no. of pairs = " + min_pairs);
System.out.println("Maximum no. of pairs = " + max_pairs);
}
// Driver code
public static void main (String[] args) {
int n = 5, m = 2;
MinimumMaximumPairs(n, m);
}
}
// This code is contributed by Sachin.
Python3
# Python3 program to find minimum
# and maximum no. of pairs
from math import ceil
def MinimumMaximumPairs(n, m) :
max_pairs = ((n - m + 1) * (n - m)) // 2;
min_pairs = (m * (((n - m) // m + 1) *
((n - m) // m)) // 2 +
ceil((n - m) / (m)) *
((n - m) % m))
print("Minimum no. of pairs = ", min_pairs)
print("Maximum no. of pairs = " , max_pairs)
# Driver code
if __name__ == "__main__" :
n ,m= 5, 2
MinimumMaximumPairs(n, m)
# This code is contributed by Ryuga
C#
// C# program to find minimum
// and maximum no. of pairs
using System;
class GFG
{
static void MinimumMaximumPairs(int n, int m)
{
int max_pairs = ((n - m + 1) * (n - m)) / 2;
int min_pairs = m * (((n - m) / m + 1) * ((n - m) / m)) / 2 +
(int)Math.Ceiling((double)((n - m) /
(double)(m))) * ((n - m) % m);
Console.WriteLine("Minimum no. of pairs = " + min_pairs);
Console.WriteLine("Maximum no. of pairs = " + max_pairs);
}
// Driver code
public static void Main()
{
int n = 5, m = 2;
MinimumMaximumPairs(n, m);
}
}
// This code is contributed by Akanksha Rai
PHP
Javascript
输出
Minimum no. of pairs = 4
Maximum no. of pairs = 6
时间复杂度: