ホームページ > ウェブフロントエンド > htmlチュートリアル > Codeforces ラウンド #266 (ディビジョン 2)_html/css_WEB-ITnose

Codeforces ラウンド #266 (ディビジョン 2)_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 11:57:20
オリジナル
1015 人が閲覧しました

Codeforces Round #266 (Div. 2)

質問リンク

A: どちらが大きいかを単純に判断します

B: x を sqrt(n) に列挙し、y を直接計算して判断できます 以上です

C : 最初に合計が 3 の倍数であるかどうかを判断し、次にプレフィックスと出現位置、および合計 / 3 の数値に対応するサフィックスの合計を前処理し、最初から最後までスキャンして、現在のものと次のものを結合します

D : まず、配列が線分を追加する方法を表すように差分を前処理します。次に、-1 があるたびに、前の 1 と照合し、その数を乗算します。 0、前の + 1 の一致と照合できます

E: ユニオン ルックアップを使用して、各クエリを開始点から + まで 2 つの部分に分割します。dfs の後にクエリが 2 回一致した場合、出力は YES、それ以外の場合は、はいいえ

コード:

#include <cstdio>#include <cstring>int n, m, a, b;int solve() {	if (b >= m * a) return a * n;	int yu = n % m;	int ans = n / m * b;	if (yu * a < b) return ans + yu * a;	return ans + b;}int main() {	scanf("%d%d%d%d", &n, &m, &a, &b);	printf("%d\n", solve());	return 0;}
ログイン後にコピー

B:

#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;typedef long long ll;ll n, a, b;int main() {	scanf("%lld%lld%lld", &n, &a, &b);	n = n * 6;	ll ans = 1e18, x, y;	if (a * b >= n) {		x = a;		y = b;		ans = a * b;	}	else {		int flag = 0;		if (a > b) {			flag = 1;			swap(a, b);		}		for (int i = 1; i < 1000000 && i < n; i++) {			ll r = n / i + (n % i != 0);			ll l = i;			if (l > r) swap(l, r);			if (l < a || r < b) continue;			if (i * r < ans) {				ans = i * r;				x = i;				y = r;			}		}		if (flag) swap(x, y);	}	printf("%lld\n%lld %lld\n", ans, x, y);	return 0;}
ログイン後にコピー

C:

#include <cstdio>#include <cstring>const int N = 500005;typedef long long ll;int n;ll a[N], pres[N], prec[N], sufs[N], sufc[N];int main() {	scanf("%d", &n);	ll sum = 0;	for (int i = 1; i <= n; i++) {		scanf("%lld", &a[i]);		sum += a[i];	}	if (sum % 3) printf("0\n");	else {		sum /= 3;		for (int i = 1; i <= n; i++) {			pres[i] = pres[i - 1] + a[i];			if (pres[i] == sum)				prec[i] = 1;		}		for (int i = n; i >= 1; i--) {			sufs[i] = sufs[i + 1] + a[i];			sufc[i] = sufc[i + 1];			if (sufs[i] == sum) sufc[i]++;		}		ll ans = 0;		for (int i = 1; i <= n; i++)			ans += prec[i] * sufc[i + 2];		printf("%lld\n", ans);	}	return 0;}
ログイン後にコピー

D:


E:

れーれー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート