我是靠谱客的博主 鲜艳蜻蜓,最近开发中收集的这篇文章主要介绍上计会算法月赛2021年一月丙组,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

分割队伍

枚举所有的分组情况,打擂台找出前后两组总等待时间之差的最小值,用前缀和数组优化对求和的计算

#include <iostream>
#include <cmath>
using namespace std;

const int N = 1e5+10;
int n, a[N], s[N], sum, minn = 1e9;;

int main(){
	cin >> n;
	for (int i = 1; i <= n; i ++) {
		cin >> a[i];
		s[i] = s[i-1] + a[i];
		sum += a[i];
	}
	
	for (int i = 1; i <= n-1; i ++) {
		minn = min(minn, abs(sum - s[i] - s[i]));
	}

	cout << minn;

    return 0;
}

康托表

将康托表旋转45°后得到下面这个金字塔图形,再观察图形写出代码
( 1 , 1 ) ( 2 , 1 )   ( 1 , 2 ) ( 3 , 1 )   ( 2 , 2 )   ( 1 , 3 ) ( 4 , 1 )   ( 3 , 2 )   ( 2 , 3 )   ( 1 , 4 ) ( 5 , 1 )   ( 4 , 2 )   ( 3 , 3 )   ( 2 , 4 )   ( 1 , 5 ) begin{gathered} (1,1)\ (2,1) (1,2)\ (3,1) (2,2) (1,3)\ (4,1) (3,2) (2,3) (1,4)\ (5,1) (4,2) (3,3) (2,4) (1,5)\ end{gathered} (1,1)(2,1) (1,2)(3,1) (2,2) (1,3)(4,1) (3,2) (2,3) (1,4)(5,1) (4,2) (3,3) (2,4) (1,5)

#include <iostream>
using namespace std;

int main(){
	int a, b;
	
	cin >> a >> b;
	int t = a+b-2, sum = 0;
	for (int i = 1; i <= t; i ++) {
		sum += i;
	}
	
	if (t%2 == 0) sum = sum + b;
	else sum = sum + a;
	
	cout << sum ;

    return 0;
}

寻找页码

#include <iostream>
using namespace std;

int a, k, cnt;

int main(){
	cin >> a >> k;
	
	int i = 0;
	while (true) {
		i ++;
		int t = i;
		
		while (t) {
			if (t%10 == a) {
				cnt ++;
				if (cnt == k) {
					cout << i << endl;
					return 0;
				}
			}
			t /= 10;
		}		
	}

    return 0;
}

三倍游戏

#include <iostream>
#include <cmath>
using namespace std;

int n, x;
int a, b, c;

int main(){
	cin >> n;
	for (int i = 1; i <= n; i ++) {
		cin >> x;
		if (x%3==0) a++;
		if (x%3==1) b++;
		if (x%3==2) c++;
	}
	
	cout << min(b,c) + a/2;
	
    return 0;
}

还原序列

#include <iostream>
#include <cstdio>
#include <map>
using namespace std;

const int N = 1e5+10;
int n, k, x, p[N], ans[N];

int main() {
	cin >> n >> k;
	for (int i =  1; i <= n; i ++) {
		cin >> x;
		p[x] = i;
	}

	for (int i = 1; i <= n; i ++) {
		int	t = p[i];
		for (int j = 1; j < k; j ++) {
			t = p[t];
		}
		ans[t] = i;
	}

	for (int i = 1; i <= n; i ++) {
		cout << ans[i] << ' ';
	}

	return 0;
}

最后

以上就是鲜艳蜻蜓为你收集整理的上计会算法月赛2021年一月丙组的全部内容,希望文章能够帮你解决上计会算法月赛2021年一月丙组所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部