Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我们能降低最大赢家问题的时间复杂度吗?_C++_Arrays_Algorithm - Fatal编程技术网

C++ 我们能降低最大赢家问题的时间复杂度吗?

C++ 我们能降低最大赢家问题的时间复杂度吗?,c++,arrays,algorithm,C++,Arrays,Algorithm,两个队(A队和B队)正在相互竞争。每个队都有相同数量的队员。两个团队中的每个团队成员都有一些与他们相关的权力。只有当一个玩家的力量严格大于对手的力量时,他才能获胜。A队的一名球员与B队的一名球员配对,按照两队球员的排列方式进行。我们可以按照我们想要的方式安排两队的球员。以这样一种方式安排团队:团队a的赢家多于输家 输入格式: 第一行输入由测试用例的数量T组成 每个测试用例的第一行由每个团队可以拥有的成员数量N组成 每个测试用例的第二行由N个空格分隔的整数组成,这些整数表示团队A成员的能力 每个测

两个队(A队和B队)正在相互竞争。每个队都有相同数量的队员。两个团队中的每个团队成员都有一些与他们相关的权力。只有当一个玩家的力量严格大于对手的力量时,他才能获胜。A队的一名球员与B队的一名球员配对,按照两队球员的排列方式进行。我们可以按照我们想要的方式安排两队的球员。以这样一种方式安排团队:团队a的赢家多于输家

输入格式:
第一行输入由测试用例的数量T组成

每个测试用例的第一行由每个团队可以拥有的成员数量N组成

每个测试用例的第二行由N个空格分隔的整数组成,这些整数表示团队A成员的能力

每个测试用例的第三行由N个空格分隔的整数组成,代表对手(B)团队成员的力量

约束条件:

  • 1N; int A[n],B[n]; 对于(int i=0;i>A[i]; } 对于(int i=0;i>B[i]; } 排序(A,A+n); 排序(B,B+n); //操作 整数计数=0; int j=n-1; 对于(int i=n-1;i>=0&&j>=0;){ 如果(A[i]>B[j]){ 计数++; 我--; } j--; }
    cout因为这是一个贪婪算法。我们每次都在挑选最佳选择。你做得对。我们需要对两个数组进行排序。如果我们使用合并排序,那么时间复杂度将是
    O(nlog(n))

    算法设计中非常流行的一种说法是
    我能做得更好吗?
    。应用不同的方法,然后找出这些方法之间的关系。如果你有额外的时间,尽量减少时间复杂度。因为你的算法已经足够优化了。

    在我看来,这可能是
    LLONG\u MAX
    你无法避免对团队进行排序。因此,最好是O(n logn),因为计数排序不是一个选项here@Damien-你是对的。我想你的意思是O(n log n),而不是O(log n)表示合并排序时间复杂性。是的,你是对的。键入错误!。我正在更改此项。
    1
    10
    3 6 7 5 3 5 6 2 9 1 
    2 7 0 9 3 6 0 6 2 6