Codeforces 1294D MEX最大化

トピックリンク:

1294D MEX最大化codeforces

アイデアを:

1.変数維持しながら、私たちは、電流分布の配列レコード番号を必要とするnow現在の答えを表し;
2.与えられたy時間は、我々は計算するために必要なcnt * x + y >= now最小のをcnt、この時点で計算cnt * x + yそれは新しいものでyあり、この位置を加算した値1;
3.ときにnow値が0よりも大きい位置には、now下の電流値のみを残し、バック移動させることができるが、残りのに適用されるnow + x缶;

コード:

#include<bits/stdc++.h>

using namespace std;

const int maxn = 4e5 + 5;
int q, x, now;
int mp[maxn];

int main() {
#ifdef MyTest
	freopen("Sakura.txt", "r", stdin);
#endif	
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> q >> x;
	for(int i = 0; i < q; ++i) {
		int y;
		cin >> y;
		int cnt = ceil(1.0 * (now - y) / x);
		y = y + cnt * x;
		if(y < q + 5) ++mp[y];
		while(mp[now]) {
			if(now + x < q + 5) mp[now + x] = mp[now] - 1, mp[now] = 1;
			++now;	
		}
		cout << now << '\n';
	}
	return 0;
}
公開された301元の記事 ウォンの賞賛8 ビュー7545

おすすめ

転載: blog.csdn.net/qq_45228537/article/details/104076696