SCCアルゴリズム月例コンペティション2021年1月グループC

チームを分割する

すべてのグループ化状況を列挙し、戦闘前後の2つのグループの合計待機時間の差の最小値を見つけ、接頭辞と配列を使用して合計の計算を最適化します

#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;
}

カンター

Cantorウォッチを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(収集)(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(集めた)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;
}

おすすめ

転載: blog.csdn.net/davidliule/article/details/113243216