倪文迪さんはブルーブリッジカップを勉強します。

20966 ワード

2021年の冬休みは毎日書きます。2017~2019年の省試合は本当に問題があります。本論文の内容は倪文迪(華東理工大学コンピュータ学部ソフトウェア192班)によって提供されます。
記事の目次
  • 一、2017年ブルーブリッジソフトウェア類C言語大学Aグループ
  • .迷宮
  • 付:2017年第8回ブルーブリッジ大会個人戦(ソフトウェア類)C/C++大学A組受験者心得
  • OJ:はい、行けますhttp://oj.ecustacm.cn/問題を出すのは3ページ目からです。http://oj.ecustacm.cn/problemset.php?page=3
    一、2017年ブルーブリッジ杯ソフトウェア類C言語大学Aグループ
    全部で10題で、テーマ総覧:1、迷宮2、バッタホッパー3、ルービックキューブ状態4、チェック分割5、アルファベット6、最大公共サブ串7、正則問題8、饅頭頭数9、チョコ10、ペンキ面積別
    初日:201.1.3日
    1.迷路
    テーマリンク:http://oj.ecustacm.cn/problem.php?id=1317
    (1)投機的で巧妙なやり方は本文の「受験生心得付き」によって、1番は空欄を記入して、答えだけを出せばいいです。符号化したくないなら、直接に手で100個の点を数えてください。数分で数えきれます。答えは31です。符号化よりも速いです。  はOJでこのようにすればACができます。
    #include
    using namespace std;
    int main(){
         
       cout << 31 << endl;
       return 0;
    }
    
    (2)やはりこの問題を使ってDFSコードを練習しましょう。問題:  という検索問題は暴力dfsを選択できます。コードは短いです。私が書いたのは少し長いですが、各点が一回しか来ないように確保できます。ちょっと最適化しました。この問題の唯一のポイントはOJに提出する時に入力しないようにしてください。555  直接に数字を出力すると、その結果、コードを参考にします。https://www.cnblogs.com/-citywall123/p/12316760.html)
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    using namespace std;
    
    int mp[20][20];
    int vis[20][20];
    bool tag[200];
    int cnt[200];
    
    int X[] = {
         0, 0, 0, -1, 1};
    int Y[] = {
         0, -1, 1, 0, 0};
    
    void solve(int x, int y, int id)
    {
         
    	while(x >= 1 && x <= 10 && y >= 1 && y <= 10 && !vis[x][y]){
         
    		vis[x][y] = id;
    		cnt[id]++;
    		int now = mp[x][y];
    		x += X[now];
    		y += Y[now];
    	}
    	if(x < 1 || x > 10 || y < 1 || y > 10){
         
    		tag[id] = true;
    		return ;
    	}
    	if(vis[x][y]){
         
    		if(tag[vis[x][y]])	tag[id] = true;	
    	}
    	return ;
    }
    
    int main(){
         
    	for(int i = 1 ; i <= 10 ; i++){
         
    		string s; cin >> s;
    		for(int j = 0 ; j < 10 ; j++){
         
    			if(s[j] == 'L')	mp[i][j + 1] = 1;
    			else if(s[j] == 'R') mp[i][j + 1] = 2;
    			else if(s[j] == 'U') mp[i][j + 1] = 3;
    			else if(s[j] == 'D') mp[i][j + 1] = 4;
    		}
    	}
    	
    	int	id = 1;
    	for(int i = 1 ; i <= 10 ; i++){
         
    		for(int j = 1 ; j <= 10 ; j++){
         
    			if(!vis[i][j]){
         
    				solve(i, j, id);
    				id++;
    			}
    		}
    	}
    	/*for(int i = 1 ; i <= 10 ; i++){
    		for(int j = 1 ; j <= 10 ; j++){
    			printf("%3.d",vis[i][j]);
    		}
    		cout << endl;
    	}*/
    	
    	int res = 0;
    	for(int i = 1 ; i < id ; i++){
         
    		if(tag[i])	res += cnt[i];
    	}
    	printf("%d
    "
    , res); return 0; }
    付:2017年第8回ブルーブリッジカップ個人戦(ソフトウェア類)C/C++大学A組受験者心得
    受験生心得:  ♦試験開始後、まずテーマをダウンロードし、試験場で公開された解凍パスワードを使って試験問題を解いてください。  ♦試験時間は4時間です。締め切り後、提出は無効です。  ♦強制試験が終わる前に、選手は自発的に試験を終了します。(身分証明書が必要です。)試験が終わったら、答えを提出したり、閲覧したりできません。  ♦選手は自分が提出した答えを見ることができます。閲覧された答えはコピーが許可されます。  ♦同じ問題に対して、選手は何回も答えを出すことができます。最後の答えを基準にします。  ♦選手は提出されたコードの中に「名前」や「試験番号」、「学府名」などの身分に関する情報や競技問題とは関係ない内容を書かないでください。そうでないと、成績は無効です。  ♦選手はブラウザを通じて自分の答えを提出しなければなりません。選手が他の席で答えをしたり、他の方法で出した答えは無効です。  ♦試験問題には三つの種類があります。「結果の穴埋め」と「コードの穴埋め」と「プログラムの設計」です。  結果の穴埋め問題:選手がテーマに基づいて直接結果を記入することを要求します。解法は制限されません。ソースコードは要求されません。結果を穴埋めした答えはそのままホームページで提出すればいいです。余計な内容は書かないでください。コードの穴埋め問題:与えられたコードの仕事原理を明らかにした上で欠落部分を記入してください。プログラムの論理が正しく、完全になるように選手に要求します。  コードを空欄にした答え(空欄の答えだけを記入して、問題面が既に存在しているコードや記号を含まない)を直接ホームページで提出すればいいです。余分な内容は書かないでください。_; はANSI C/ANSI C++標準を使用しており、オペレーティングシステムやコンパイラが提供する特殊な関数に依存しないでください。選手に設計されたプログラムは与えられた入力に対して正確な出力結果を与えることができます。受験生のプログラムは正しい結果を実行してこそ得点が得られます。  に注意してください。採点時に使用する入力データは、試験用紙に提示されるデータとは異なる場合があります。選手のプログラムは必ず共通していなければなりません。答案用紙に与えられたデータだけを有効にしてはいけません。プログラミング問題に対して、選手に要求される解答はANSI C++標準に完全に一致しています。図形描画、Win 32 API、中断呼び出し、ハードウェア操作、またはオペレーティングシステムに関連するAPIなどを使用してはいけません。_; コードにSTLクラスライブラリの使用が許可されています。main関数が終了したら0  に戻らなければならないので、注意してください。すべての依存関数はソースファイルの中で明確にしなければなりません。プロジェクト設定によって常用ヘッダファイルを省略することはできません。すべてのソースコードは同じファイルでなければなりません。デバッグが通ったら、コピーして提出します。  提出時に、希望のコンパイラのタイプを選ぶことに注意します。
    1.結果の穴埋め(満点5点)  問題の記述は、受験者フォルダの下でタイトルに対応する「タイトル.txt」に記載されています。関連する参照ファイルは同じディレクトリにあります。問題を解決する方法に限らず、結果だけを提出してください。  はブラウザを通じて答えを提出しなければなりません。
    2.結果の穴埋め(満点11点)  問題の記述は、受験者フォルダの下の対応タイトルの「タイトル.txt」に記載されています。関連する参照ファイルは同じディレクトリにあります。問題を解決する方法に限らず、結果だけを提出してください。  はブラウザを通じて答えを提出しなければなりません。
    3.結果の穴埋め(満点13点)  問題の記述は、受験者フォルダの下でタイトルに対応する「タイトル.txt」に記載されています。関連する参照ファイルは同じディレクトリにあります。問題を解決する方法に限らず、結果だけを提出してください。  はブラウザを通じて答えを提出しなければなりません。
    4.結果の穴埋め(満点17点)  問題の記述は、受験者フォルダの下でタイトルに対応する「タイトル.txt」に記載されています。関連する参照ファイルは同じディレクトリにあります。問題を解決する方法に限らず、結果だけを提出してください。  はブラウザを通じて答えを提出しなければなりません。
    5.コードの空欄(満点7点)  問題の記述は受験者フォルダの下で問題番号に対応する「タイトル.txt」にあります。関連する参照ファイルは同じディレクトリにあります。まずテーマを読んでください。問題を解決する方法に限りません。欠けているコード部分だけを記入してください。蛇足を加えないでください。余分な既存のコードや記号を記入してください。  はブラウザを通じて答えを提出しなければなりません。
    6.コードの空き(満点9点)  問題の記述は、受験者フォルダの下でタイトルに対応する「タイトル.txt」に記載されています。関連する参照ファイルは同じディレクトリにあります。まずテーマを読んでください。問題を解決する方法に限りません。欠けているコード部分だけを記入してください。蛇足を加えないでください。余分な既存のコードや記号を記入してください。  はブラウザを通じて答えを提出しなければなりません。
    7.プログラム設計(満点19点)  問題の記述は受験者フォルダの下で問題番号に対応する「テーマ.txt」にあります。関連する参照ファイルは同じディレクトリにあります。まずテーマを読んでください。プログラムで問題を解決しなければなりません。  に注意してください。採点時に使用する入力データは、試験用紙に提示されるデータとは異なる場合があります。選手のプログラムは必ず共通していなければなりません。答案用紙に与えられたデータだけを有効にしてはいけません。プログラムの入出力要求をよく読んでください。要求されていない、余分な内容を出力しないでください。例えば、「xxデータを入力してください。」例をよく読むことをお勧めします。もちろん考えないでください。一つの用例のデータを処理し終わったら、すぐに終了します。次の用例の入力をループしないでください。  プログラムは標準入力、標準出力を使用して、マシン採点時の方向転換を容易にしなければなりません。プログラミング問題に対して、選手に要求される解答はANSI C++標準に完全に一致しています。図形描画、Win 32 API、中断呼び出し、ハードウェア操作、またはオペレーティングシステムに関連するAPIなどを使用してはいけません。_; コードにSTLクラスライブラリの使用が許可されています。main関数の終わりには、return 0  注意が必要です。すべての依存関数は、ソースファイルに明示的にある必要があります。プロジェクトの設定によって、常用ヘッダファイルを省略することはできません。すべてのコードを同一のソースファイルに入れ、デバッグを通過した後、ソースコードをコピーして提出します。  提出時に、希望のコンパイラのタイプを選ぶことに注意します。
    8.プログラム設計(満点21点)  問題の記述は受験者フォルダの下で問題番号に対応する「テーマ.txt」にあります。関連する参照ファイルは同じディレクトリにあります。まずテーマを読んでください。プログラムで問題を解決しなければなりません。注意事項を同題にする
    9.プログラム設計(満点23点)  問題の記述は受験者フォルダの下で問題番号に対応する「テーマ.txt」にあります。関連する参照ファイルは同じディレクトリにあります。まずテーマを読んでください。プログラムで問題を解決しなければなりません。注意事項を同題にする
    10.プログラム設計(満点25点)  問題の記述は受験者フォルダの下で問題番号に対応する「テーマ.txt」にあります。関連する参照ファイルは同じディレクトリにあります。まずテーマを読んでください。プログラムで問題を解決しなければなりません。注意事項を同題にする