Codeforces Round #574 (Div. 2) A B C D1

Codeforces Round #574 (Div. 2)

Drinks Choosing

#include<bits/stdc++.h>
using namespace std;
const int N = 1e3+100;
typedef long long ll;

int n,k;
int a[N];
int b;
int cnt=0;
int main(){
	cin >> n >> k;
	for(int i=0;i<n;i++){
		cin >> b;
		a[b]++;
	}
	int cnt=(n+1)/2;
	int sum=0;
	for(int i=1;i<=k;i++){
		if(cnt>=a[i]/2) cnt-=a[i]/2,sum+=a[i]/2*2,a[i]%=2;
		else {
			while(a[i]>=2&&cnt>0){
				a[i]-=2;
				cnt--;
				sum+=2;
			}
		}
		if(cnt==0) break;
	}
	for(int i=1;i<=k;i++){
		if(cnt==0) break;
		if(a[i]>0){
			a[i]--;
			cnt--;
			sum++;
		}
	}
	cout << sum << endl;
	return 0;
}

  B Sport Mafia

假设 a 为操作1执行次数,b为操作2执行次数

a + b = n

1 + ( a - 1 ) * a / 2 - b = k

解方程

#include<bits/stdc++.h>
using namespace std;
const int N = 1e3+100;
typedef long long ll;

ll n,k;
int main(){
	cin >> n >> k;
	ll x=(-3+sqrt((n+k)*8+9))/2;
	cout << n - x  << endl;
	return 0;
}

  CBasketball Exercise

dp[i][j] 表示选第 j 行第 i 个数的最大值

dp[i][j] = max( dp[i-1][j^1] , dp[i-2][j] , dp[i-2][j^1] );

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+100;
typedef long long ll;

int n;
ll a[2][N];
ll dp[N][2];
int main(){
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> a[0][i];
	}
	for(int i=1;i<=n;i++){
		cin >> a[1][i];
	}
	ll ma=0;
	for(int i=1;i<=n;i++){
		for(int j=0;j<2;j++){
			dp[i][j]=max(dp[i][j],dp[i-1][(j+1)%2]+a[j][i]);
			dp[i][j]=max(dp[i][j],dp[i-2][j]+a[j][i]);
			dp[i][j]=max(dp[i][j],dp[i-2][(j+1)%2]+a[j][i]);
			ma=max(dp[i][j],ma);
		}
	}
	cout << ma << endl;
	return 0;
}

  D1Submarine in the Rybinsk Sea (easy edition)

每个数在 i 位都加了 n 次

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+100;
typedef long long ll;
#define mod 998244353

int n;
ll a[N];

ll qpow(ll x,int y){
	ll res=1;
	while(y){
		if(y&1) res=res*x%mod;
		x=x*x%mod;
		y/=2;
	}
	return res;
}
int main(){
	cin >> n;
	ll sum = 0;
	ll res=0;
	for(int i=0;i<n;i++){
		cin >> a[i];
		int cnt=0;
		sum = a[i];
		while(sum){
			res=(res + sum%10*n%mod*qpow(10,cnt)%mod)%mod;
			cnt++;
			res=(res + sum%10*n%mod*qpow(10,cnt)%mod)%mod;
			cnt++;
			sum/=10ll;
		}
	}
	
	
	cout << res << endl;
	return 0;
}

  

猜你喜欢

转载自www.cnblogs.com/YJing814/p/11205530.html