列表

详情


NC247047. GCPC总决赛

描述

GCPC 总决赛要来了,DarknessCatcher 的学校和 yxlxszx 的学校分别有 n 支队伍,DarknessCatcher 的第  支队伍有 a_i 个“大跌”,yxlxszx 的第  支队伍有 b_i 个“大跌”,“大跌”越多的队伍越强,如果“大跌”数量相等则一样强。

现在 DarknessCatcher 和 yxlxszx 的 n 支队伍两两匹配,对于某种两两匹配的情况,对于  ,如果 DarknessCatcher 第  支队伍严格强于 yxlxszx 的第  支队伍,那么 DarknessCatcher 得一分,如果 DarknessCatcher 第  支队伍严格弱于 yxlxszx 的第  支队伍,那么 yxlxszx 得一分,否则双方均不得分。最后分数高的一方获得这一种比赛局面的胜利,分数低的一方失败,分数相等平局。

请你计算对于所有两两匹配的比赛局面中 DarknessCatcher 获胜的情况数,失败的情况数,平局的情况数。

输入描述

第一行给定一个正整数   表示两方的队伍数量。

第二行给定  个正整数   表示 DarknessCatcher 每支队伍的“大跌”数量。

第三行给定  个正整数   表示 yxlxszx 每支队伍的“大跌”数量。

输出描述

输出所有情况中 DarknessCatcher 获胜的情况数,失败的情况数,平局的情况数。

示例1

输入:

2
0 2
1 3

输出:

0 1 1

说明:

所有情况为:

 此时 DarknessCatcher 有一支队伍获胜,yxlxszx 有一支队伍获胜,平局。

 此时 DarknessCatcher 没有队伍获胜,yxlxszx 有两支队伍获胜,DarknessCatcher 失败。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(g++ 7.5.0) 解法, 执行用时: 88ms, 内存消耗: 456K, 提交时间: 2022-12-16 19:57:06

#include<bits/stdc++.h>
using namespace std;
int a[110],b[110],c[110];
int main()
{
    int n;
	cin>>n;
    for(int i=1;i<=n;i++)a[i]=i;
	for(int i=1;i<=n;i++)cin>>b[i];
	for(int i=1;i<=n;i++)cin>>c[i];
	int x=0,y=0,z=0,s;
	do{
        s=0;
		for(int i=1;i<=n;i++){
			if(b[i]>c[a[i]]) s++;
			else if(b[i]<c[a[i]]) s--;
		}
		if(s>0)x++;
		else if(s==0)z++;
		else y++;
	}while(next_permutation(a+1,a+1+n));
	cout<<x<<" "<<y<<" "<<z<<'\n';
}

C++(clang++ 11.0.1) 解法, 执行用时: 136ms, 内存消耗: 512K, 提交时间: 2022-12-17 12:12:16

#include<bits/stdc++.h>
using namespace std;
int n,a[100],b[100];
int d,s,f,p,w,sum=1;
int main() {
	cin>>n;
	for(int i=1;i<=n;i++) sum*=i;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) cin>>b[i];
	while(w<sum){
		d=0; w++;
		next_permutation(b+1,b+n+1);
		for(int i=1;i<=n;i++)
		{
			if(a[i]>b[i]) d++;
			if(a[i]<b[i]) d--;
		}
		if(d>0) s++;
		if(d==0) p++;
		if(d<0) f++;
	}
	cout<<s<<" "<<f<<" "<<p;
	return 0;
}

pypy3 解法, 执行用时: 756ms, 内存消耗: 22864K, 提交时间: 2022-12-16 20:32:31

from itertools import permutations
n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
win, draw, lose = 0, 0, 0
for p in permutations(b):
    cnt = 0
    for i in range(n):
        if a[i] > p[i]:
            cnt += 1
        elif a[i] < p[i]:
            cnt -= 1
    if cnt > 0:
        win += 1
    elif cnt == 0:
        draw += 1
    else:
        lose += 1
print(win, lose, draw)

上一题