Codeforces Round #677 (Div. 3)

C - Dominant Piranha

#include<bits/stdc++.h>
 
const int maxn = 300005;
 
int T ,k ,n;
int a[maxn];
 
bool flg;
int main()
{
    
    
	scanf("%d",&T);
	while(T--)
	{
    
    
		scanf("%d",&n);flg=1;k=1;
		for(int i=1;i<=n;i++)
		{
    
    
			scanf("%d",&a[i]);
			if(a[i]!=a[1])flg=0;
			if(a[i]>a[k])k=i;
		}
		if(k==1)while(a[k]==a[k+1])k++;
		if(flg) printf("-1\n");
		else printf("%d\n",k);
	}
}

D - Districts Connection

#include <cstdio>
int a[5005];
int main(){
    
    
	int T;scanf("%d",&T);
	while(T--){
    
    
		int n;scanf("%d",&n);
		int j=0;
		for(int i=1;i<=n;i++){
    
    
			scanf("%d",&a[i]);
			if(a[i]!=a[1])j=i;
		}
		if(j==0){
    
    
			printf("NO\n");
			continue;
		}
		printf("YES\n");
		for(int i=2;i<=n;i++)if(a[i]!=a[1])printf("%d %d\n",1,i);
		else printf("%d %d\n",j,i);
	}
	return 0;
} 

E - Two Round Dances
在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
int main() 
{
    
    
	int n;
	cin>>n;
	long long int f=1;
	for(int i=1;i<=n;i++)
		f=f*i;
	cout<<f*2/(n*n);
}

F. Zero Remainder Sum

dp

#include <bits/stdc++.h>
#define fi first
#define se second
#define mp make_pair
using namespace std;
const int oo = 1e9;
 
int a[75][75];
int dp[75][75][75][75];
int n,m,k;
 
int solve(int i, int j, int num, int sum)
{
    
    
    int &res = dp[i][j][num][sum];
    if(i > n) return sum ? -oo : 0;
    if(res != -1) return res;
    if(j > m) solve(i + 1, 1, 0, sum);
    res = solve(i, j + 1, num, sum);
    if(num < m / 2) res = max(res, solve(i, j, num + 1, (sum + a[i][j]) % k) + a[i][j]);
    
    return res;
}
int main()
{
    
    
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
    {
    
    
        cin >> a[i][j];
    }
    memset(dp, -1, sizeof(dp));
    cout << solve(1, 1, 0, 0);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_45772236/article/details/109259058