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

Codeforces ラウンド #243 (ディビジョン 2)??Sereja と Table_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 12:05:28
オリジナル
894 人が閲覧しました

codeforces.com/contest/426/problem/D

  • 質問の意味:
    まず、接続されたブロックの定義を与えます: 隣接する (上下左右) 同一の数字は接続されたブロックとみなされますブロック
    ここで、0 と 1 と数値 k のみを含む n*m 個の長方形を与え、全体がいくつかの長方形の接続されたブロックを含む (つまり、接続された各ブロックが長方形になる) ように反転の最小数を見つけます (1?≤?) n,?m? ≤?100; 1?≤?k?≤?10)
    最小回数が k より大きい場合、出力 -1
  • 質問の特徴は、k が比較的小さいことです。 、これは反転の数が比較的少ないことを意味するため、ここから開始できます。すべての位置を直接列挙することは間違いなく不可能なので、次のように考えることができます: (n>=m とする) n が k より大きい場合、反転した番号を持たない行がいくつかあるはずです。 enumerate 各行を処理する; k が n より大きい場合、この時点では n は 10 未満なので、この時点で各行の状態をすべて列挙して処理できます。
    上記の 2 つの方法は、以下のグラフィック特性に基づいています。1 つの線だけがわかっている場合、最小の合計反転数を見つけることができます
  • 最終的には、
    01010...
    10101...
    しかありません。 ...
    の形 (1文字で長方形を表します)


    const int MAXN = 110;int ipt[MAXN][MAXN];int main(){//    freopen("in.txt", "r", stdin);	int n, m, k;	while (~RIII(n, m, k))	{		REP(i, n) REP(j, m) RI(ipt[i][j]);		if (n < m)		{			REP(i, n) FF(j, i + 1, m) swap(ipt[i][j], ipt[j][i]);			swap(n, m);		}		if (n > k)		{			int ans = INF;			REP(i, n)			{				int tans = 0;				REP(j, n)				{					int cnt = 0;					if (i == j) continue;					REP(k, m)					{						if (ipt[i][k] != ipt[j][k]) cnt++;					}					tans += min(cnt, m - cnt);				}				ans = min(ans, tans);			}			printf("%d\n", ans <= k ? ans: -1);		}		else		{			int ans = INF;			REP(i, n)			{				int all = 1 << m;				for (int q = 0; q < all; q++)				{					int diff = 0;					for (int t = 0, l = 1; t < m; l <<= 1, t++) if (((q & l) != 0) != ipt[i][t]) diff++;					if (diff > k) continue;					int tans = 0;					REP(j, n)					{						if (i == j) continue;						int cnt = 0;						for (int t = 0, l = 1; t < m; t++, l <<= 1) if (((q & l) != 0) != ipt[j][t]) cnt++;						tans += min(cnt, m - cnt);					}					ans = min(ans, diff + tans);				}			}			printf("%d\n", ans <= k ? ans: -1);		}	}	return 0;}
    ログイン後にコピー


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