荒れた海の2日目のソートアルゴリズムで冬の釣り

免責事項:この記事はブロガーに連絡してください転載については、ブロガーオリジナル記事です。https://blog.csdn.net/GregoryHanson/article/details/86626670

仕上げ知識

(昇順)ソート機能の使用法:

sort(vec.begin(),vec.end(),cmp);
//sort(开始地址,结束地址,cmp);

CMPのデフォルトの関数は、照合、オーバーライド機能のCMPを書き換えるために、省略されています。このような降順の変化として:

bool cmp(const int &a, const int &b) {
	return a > b;
}

Presetationエラー(出力フォーマットエラー):行の終わりをチェックは、多出力空間ではありません。次のコード行の終わりまでに達成するためにスペースになることはできません。

cout<<vec[0];
for (int i = 1; i < N; i++) {
    cout << " " << vec[i];
}

コンテナ内の最初のいくつかの位置での値を検索します。

cout << find(vec.begin(), vec.end(), valueToFind) - vec.begin() + 1 << endl;

オブジェクト要素としてアクセスイテレータでは、次のようなブラケットを、追加する必要があります。

(*iter).begin();

タイトル

タイトル

HDU - 1029イグナチオとプリンセスIV

「OK、あなたはEM、あまりにも悪くはない...しかし、あなたは、次のテストに合格することはできません。」feng5166氏は述べています。
「私はあなたの奇数N、その後、Nの整数を教えてくれます。あなたは私はあなたにすべての整数を伝えた後、その整数は特別なものである私に伝える必要があり、その中で特別な整数があるでしょう。」と言うfeng5166。
「しかし、特殊な整数の特徴は何ですか?」イグナチオは尋ねます。
「整数(N + 1)/ 2倍以上に現れます。あなたが右の整数を見つけることができない場合は、あまりにも、私はプリンセスを殺すだろう、とあなたは私の夕食になります。アハハハ...」feng5166氏は述べています。
あなたはイグナチオのための特別な整数を見つけることができますか?
入力
入力は、いくつかのテストケースが含まれています。各テストケースは、2つの行を含んでいます。最初の行は奇数の整数私たちの英雄を教えてくれますfeng5166整数の数を示すN(1 <= N <= 999999)からなります。2行目は、N個の整数を含みます。入力は、ファイルの終わりで終了します。
出力
各テストケースの場合は、あなたは出力に、あなたが発見した特別な番号が含まれている唯一のラインを持っています。
サンプル入力
5
1 3 2 3 3
11
1 1 1 1 1 5 5 5 5 5 5
7
1 1 1 1 1 1 1
サンプル出力
3
5
1

コード:

#define _crt_secure_no_warnings
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<cstring>
#include<vector>
#include<stdlib.h>
#include<memory.h>
using namespace std;

int main() {
	int N;
	while (scanf("%d", &N) != EOF) {
		vector<int> vec;
		for (int i = 0; i < N; i++) {
			int temp;
			cin >> temp;
			vec.push_back(temp);
		}
		sort(vec.begin(), vec.end());
		cout << vec[(N - 1) / 2] << endl;
	}
	return 0;
}

Bタイトル

HDU - 1040 + Bと同じように簡単に

これらの日、私はどのように私は+ Bと同じように簡単に問題を得ることができ、質問考えていますか?かなりそのようなことを行うには困難です。もちろん、私は多くの目覚めの夜の後にそれを得ました。
あなたにいくつかの整数を与え、あなたのタスクは、これらの番号の昇順にソートすることである(升序)。
あなたは問題が、今がいかに簡単であるかを知っておくべき!
がんばろう!
入力
入力は複数のテストケースが含まれています。入力の最初の行は、テストケースの数であり、単一の整数Tです。Tのテストケースは以下の通り。各テストケースは、整数(整数の数をソートする<= 1000 1 <= N)、Nを含み、N個の整数は、同じ行に従います。
すべての整数は32-int型の範囲にあることguarantiedされます。
出力
各ケースに対しては、ソート結果を印刷して、1行1ケース。サンプル入力
2
3 2 1 3
9 1 4 7 2 5 8 3 6 9
サンプル出力
1 2 3
1 2 3 4 5 6 7 8 9

この問題は発生しやすいpresetationエラー、各行の最後のより多くのスペースの理由。ときにノートの出力。

コード:

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<cstring>
#include<vector>
#include<stdlib.h>
#include<memory.h>
using namespace std;

int main() {
	int T;
	cin >> T;
	while (T--) {
		int N;
		cin >> N;
		vector<int> vec;
		for (int i = 0; i < N; i++) {
			int temp;
			cin >> temp;
			vec.push_back(temp);
		}
		sort(vec.begin(), vec.end());
		for (int i = 0; i < N; i++) {
			cout << vec[i];
			if (i != N - 1) {
				cout << " ";
			}
		}
		cout << endl;
	}
	return 0;
}

Cのタイトル

HDU - 1718ランク

ジャクソンはクラスで彼のランクを知りたいです。教授は学生数と記号のリストを掲載しています。クラスのジャクソンのランクを計算します。彼はトップのマークを持っている(または上のマークのために結ばれている)場合には、彼のランクが1である、です。彼は次善のマークを持っている(または接続されてい)場合は、彼のランクは2のように、と。
入力
入力は、いくつかのテストケースで構成されています。各ケースは、各々が10000000と99999999との間の学生番号、0と100との間マーク学生番号とマークの行を含む、学生の数は、いくつかの線で後ジャクソン、10000000と99999999との間の整数の学生数で始まります0の各テストケースを終了します。そこクラスには1000人の以上の学生がなく、それぞれが独自の学生の数を持っています。
出力
各テストケースの場合、出力ラインは、クラス内のジャクソンのランクを与えます。
サンプル入力
20070101
20070102 100
20070101 33
20070103 22
20070106 33
0 0
サンプル出力
2

ジャックスコアを求めていない、ジャックスコアランキングを求めている、誤解件名を開始するには、いくつかのハイスコアの最初のものです。この質問は、入力の複数のセットです!入力の複数のセット!入力の複数のセット!(私を含め)何人かが気づきませんでした。

コード:

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<cstring>
#include<vector>
#include<stdlib.h>
#include<map>
using namespace std;

bool cmp(const int &a, const int &b) {
	return a > b;
}

int main() {
	int jacknum;
	while (scanf("%d", &jacknum) != EOF) {
		int jackscore;
		vector<int> vec;
		int num;
		int score;
		while (cin >> num >> score) {
			if (num == 0 && score == 0) {
				break;
			}
			if (jacknum == num) {
				jackscore = score;
			}
			vec.push_back(score);
		}
		sort(vec.begin(), vec.end(), cmp);
		cout << find(vec.begin(), vec.end(), jackscore) - vec.begin() + 1 << endl;
	}
	return 0;
}

Dタイトル

CodeForces - 137Cの歴史

Polycarpusは学校で多くのことを勉強好きで、彼は常に彼の宿題について勤勉です。彼の曾曾祖父は偉大な物理学者SeinsteinがあったようPolycarpusは、自然科学に問題がありませんでした。一方しかし、Polycarpusはhistory.Everybodyで簡単に時間がなかった世界の歴史が正確にn個のイベント包含することを知っている:i番目のイベントは、今年バイ包括的(AI <BI)に年aiから続けていました。n個のイベントのそれぞれが開始と終了時にPolycarpusを簡単に(Polycarpusは、彼の偉大-偉大-祖父から優れたメモリを継承)日付を学びました。しかし、先生は彼に、より複雑なタスクを与えた:すべてのイベントが始まり、終わったときPolycaprusが知っておくべき、彼はまた、別のイベントが含まれているかどうか、各イベントのために見つける必要があります。Polycarpus'先生は、イベントjはイベントが含まれていることを考えて、私AJ <もし AIと両性<BJ。あなたの仕事は簡単です:いくつかの他のイベントに含まれているイベントの数を見つけます。
入力
最初の入力ラインは、イベントの数を表す整数n(105≤1≤N)を含みます。次のn行は、過去のイベント、1行につき1つのイベントの説明を含みます。初めとi番目のイベントの終わりを- I + 1本のラインは、二つの整数AiとBI(1≤AI <109≤BI)を含みます。どの2つのイベントが同じ年に開始していないか、仕上げ、つまり、≠AJ、AI≠BJ、(I≠jの)全てのi、jのためのBI≠AJ、双方向≠BJをaiを。イベントは、任意の順序で与えられています。
出力は、
整数のみを印刷する-回答をproblem.Examplesのに
入力
5
1 10
2 9
3 8
4 7
5 6
出力
4
入力
5
1 100
2 50
51 99
52 98
10 60
出力
4
入力
1
1 1000000000
出力
0

最初の例では、第五のイベントは、第四の中に含まれています。第二及び第二に- -同様に、第4のイベントは、第三に含まれる最初に。
第2の例では最初のものを除くすべてのイベントが最初に含まれています。
第三の例だけのイベントでは、そう答えは0です。

2サイクル以降では、関係なく、テストポイントが常にある方法を最適化した実装とあなたが残業することができない、私はコンテナと、コンテナの文言に代わるものではありませんので、理由があると思ったし、テストポイントも減らすことができることを見出しました。
その後、サイクリングの層が、私はこの方法を考えていませんでした、問題を解決することができ、または少し賢いなりますました。

コード:

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<cstring>
#include<vector>
#include<stdlib.h>
#include<memory.h>
#include<map>
using namespace std;

bool cmp(const pair<int, int> &a, const pair<int, int> &b) {
	return a.first < b.first;
}

int main() {
	int N;
	cin >> N;
	vector<pair<int, int>> vec;
	int a, b;
	while (N--) {
		cin >> a >> b;
		vec.push_back(pair<int, int>(a, b));
	}
	sort(vec.begin(), vec.end(), cmp);
	int count = 0;
	int maxa = (*vec.begin()).second;
	for (vector<pair<int, int>>::iterator iter = vec.begin();
		iter != vec.end(); ++iter) {
		if ((*iter).second < maxa) {
			count++;
		}
		else {
			maxa = (*iter).second;
		}
	}
	cout << count << endl;
	return 0;
}

Tucao:Dタイトルは確かに私の頭は良くないですが、私は1サイクル法を期待していませんでした。問題は、第三に、ソートのカテゴリーD構造に分割しなければならない、彼は小さなミスの人々の問題を作りました。

おすすめ

転載: blog.csdn.net/GregoryHanson/article/details/86626670