Educational Codeforces Round 137 (Rated for Div. 2) A - D

A.Password

void solve() {
    int n; cin >> n;
    for (int i = 0;i < n;i++) {
    	int x; cin >> x;
    }

    ll ans = 6;
    int m = 10 - n;
    if (m >= 2)
    ans = ans * m * (m - 1) / 2;
    cout << ans << endl;
}

B.Permutation Value

void solve() {
  	int n; cin >> n;
  	vector<int> a(n + 1);
  	a[1] = 1;
  	a[2] = n;
  	a[n] = 2;
  	for (int i = 3;i < n;i++) a[i] = i;
  	for (int i = 1;i <= n;i++) cout << a[i] << " \n"[i == n];
}

C.Save the Magazines

void solve() {
    int n; cin >> n;
    string s; cin >> s; s = ' ' + s;
    vector<int> cnt(n + 1);
    for (int i = 1;i <= n;i++) cin >> cnt[i];
    
	ll ans = 0;
	for (int i = 1;i <= n;i++) {
		if (s[i] == '1') {
			ans += cnt[i];
		}
	}
	int last = 0, pos = -1;
	for (int i = 1;i <= n;i++) {
		if (s[i] == '0') last = cnt[i], pos = i;
		else {
			if (last >= cnt[i] && pos != -1) {
				swap(s[pos], s[i]);
				ans += last - cnt[i];
				last = cnt[i];
				pos = i;
			}
		}
	}
	cout << ans << endl;
}

D.Problem with Random Tests

bitset<1000010> f, g, ans, res;
void solve() {
    int n; cin >> n;
    string s; cin >> s;
    int first = -1;
    for (int i = 0;i < n;i++) {
        if (s[i] == '0') {
            first = i;
            break;
        }
    }
    if (first == -1) {
        cout << s << endl;
        return;
    }
    for (int i = 0;i < n;i++) {
        if (s[i] == '1') f[i] = g[i] = 1;
    }
    
    for (int i = 0;i < n;i++) {
        if (s[i] == '1') {
            res = (g << i) | f;
            for (int i = 0;i < n;i++) {
                if (res[i] && !ans[i]) {
                    ans = res;
                    break;
                }
                else if (!res[i] && ans[i]) break;
            }
        }
    } 
    int i = 0;
    while (ans[i] == 0 && i < n) i ++;
    if (i == n) cout << 0;
    for (;i < n;i++) cout << ans[i];
    
    cout << endl;
}

posted @ 2022-10-18 16:40  Coldarra  阅读(36)  评论(0)    收藏  举报