SRM 630 DIV2_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 11:59:17
オリジナル
1031 人が閲覧しました

SRM 630 DIV2

初めて TC を試したとき、AK を持っていると思いましたが、1000 ポイントはまだシステムによって失われていましたが、部屋の他の人々も失い、大金を稼ぎました

A:文字列の長さはわずか 50 で、簡単で単純です。 シミュレートするだけです
B: ノードの数はわずか 10 です。 まず 1 つの floyd を実行して 2 つの間のパスを見つけ、次にどの点を選択するかを激しく列挙して、それが正しいかどうかを判断します可能であれば、最大数を記録してください
C : 最初のアプローチは、ランク配列を構築し、連続する各セグメントに a を配置し、その後、最後のセグメントに b を配置することでした。辞書順で最も小さいものですが、結果としてシステムによって削除されました。
正しいアプローチ: 最初に sa 配列を構築し、各位置を激しく列挙して、それが 'a' でない場合は、辞書編集順序が小さいことを確認するために 1 を減算してから、sa 配列を構築し、2 つのサフィックス配列が同じであるかどうかを判断します。同様に、すべての位置が異なる場合は、これが辞書編集的に最小であることを意味します

コード:

A:

#include <cstdio>#include <cstring>#include <iostream>#include <vector>#include <set>#include <map>#include <string>using namespace std;class DoubleLetter {    public:	string ableToSolve(string S) {	    while (1) {		int n = S.length();		string tmp = "";		int flag = 1;		for (int i = 0; i < n - 1; i++) {		    if (S[i] == S[i + 1]) {			flag = 0;			for (int j = 0; j < n; j++) {			    if (j == i || j == i + 1) continue;			    tmp += S[j];			}			break;		    }		}		if (flag) break;		S = tmp;	    }	    if (S == "") return "Possible";	    else return "Impossible";	}};
ログイン後にコピー

B:

#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;class Egalitarianism3Easy {public:    int bitcount(int x) {	int ans = 0;	while (x) {	    ans += (x&1);	    x >>= 1;	}	return ans;    }    int maxCities(int n, vector<int> a, vector<int> b, vector<int> len) {	int g[15][15];	for (int i = 1; i <= 10; i++)	    for (int j = 1; j <= 10; j++) {		if (i == j) g[i][j] = 0;		else g[i][j] = 1000000000;	    }	for (int i = 0; i < n - 1; i++)	    g[a[i]][b[i]] = g[b[i]][a[i]] = len[i];	for (int k = 1; k <= n; k++) {	    for (int i = 1 ; i <= n; i++) {		for (int j = 1; j <= n; j++) {		    g[i][j] = min(g[i][j], g[i][k] + g[k][j]);		}	    }	}	int tmp[15], tn;	int ans = 1;	for (int i = 1; i < (1<<n); i++) {	    tn = 0;	    for (int j = 0; j < n; j++) {		if (i&(1<<j)) {		    tmp[tn++] = j + 1;		}	    }	    int ss = -1;	    int flag = 0;	    for (int j = 0; j < tn; j++) {		for (int k = j + 1; k < tn; k++) {		    if (ss == -1) ss = g[tmp[j]][tmp[k]];		    else {			if (ss != g[tmp[j]][tmp[k]]) {			    flag = 1;			    break;			}		    }		}		if (flag)		    break;	    }	    if (flag == 0) ans = max(ans, bitcount(i));	}	return ans;    }};
ログイン後にコピー

C:

れーい

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