首页 > 其他 > 详细

Codeforces Round #673 (Div. 2)

时间:2020-09-29 13:04:45      阅读:38      评论:0      收藏:0      [点我收藏+]

A题

技术分享图片

 

 思路:取出最小值,所有数加到最小值的最大倍数使得不超过k 记录次数即可

#include <bits/stdc++.h>
using namespace std;
int main () {
	int T;
	cin >> T;
	while(T--) {
		int n, k;
		cin >> n >> k;
		vector<int> a(n);
		int minn = 0x3f3f3f3f;
		int sum = 0;
		for(int i = 0; i < n; ++i) {
			cin >> a[i];
			sum += a[i];
			minn = min(minn, a[i]);
		}
		int ans = 0;
		for(int i = 0; i < n; ++i) {
			ans += (k - a[i]) / minn; 
		}
		ans -= (k - minn) / minn;
		cout << ans << endl;
	}
} 

 B题

技术分享图片

 

 思路:分成三种情况。小于最大值的一半,等于最大值的一半,大于最大值的一般。依次标记即可

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main () {
	int T;
	cin >> T;
	while(T--) {
		ll n, T;
		cin >> n >> T;
		vector<int> a(n);
		for(int i = 0; i < n; ++i) {
			cin >> a[i];
		}
		int temp = 1;
		for(int i = 0; i < n; ++i) {
			if(a[i] < T / 2 || a[i] == T / 2 && T & 1) {
				cout << 0 << " ";
			}
			else if(!(T & 1) && a[i] == T / 2){
				if(temp & 1) {
					cout << 0 << " ";
				} 
				else {
					cout << 1 << " ";
				}
				temp++;
			}
			else {
				cout << 1 << " ";
			}
		} 
		cout << endl;
//		int i;
//		for(i = 0; i < n && a[i] < T / 2; i++) {
//			cout << 0 << " ";
//		}
//		int temp = 1;
//		for(; i < n && a[i] == T / 2; ++i) {
//			if(temp & 1) {
//				cout << 0 << " ";
//			}
//			else {
//				cout << 1 << " ";
//			}
//			temp++;
//		}
//		for(; i < n; ++i) {
//			cout << 1 << " ";
//		}
//		cout << endl;
	}
} 

 

Codeforces Round #673 (Div. 2)

原文:https://www.cnblogs.com/lightac/p/13748574.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!