SupercomputingContest2019/予選・認定問題Q&A 最終更新日時: 2019-06-11 (火) 18:44:31 大会側に寄せられた質問及びその回答を掲載しています. †このページからの質問は受け付けておりません.質問は以下よりお願いします.
なお,問い合わせの際には学校名・氏名を記入し,質問の内容がよく分かる件名をつけて頂くようお願いいたします. 【注意】上記の質問用メールアドレスに間違いがございました.ただ,これまでの質問は適切に処理されておりますので,ご安心ください. コンパイルに関して †Q. C++のプログラムのコンパイルに関するオプションについて 「審査は 2.5GHz の Intel Xeon CPU を搭載した LINUX マシン上で実行する。コンパイラはgccバージョン 4.8.2 を使い、(略) C++ 言語で書かれている場合は g++ -O -lm -std=c++14 プログラム名.cpp とコンパイルする。」 と記載されてますが,これは正しいですか? A. 記載が間違いです。 g++ -O -lm -std=c++1y プログラム名.cpp と読み替えてください。この記載は,2019/5/29 19:29頃まで掲載されていた予選問題に対するものです。現在掲載されているものにつきましては訂正されております。 問題について †Q. 1回で求めたいものを引き当てられる確率は1/(2^100)であることは運営では考慮されているか? A. 問題の解法に関わってしまうので、あまり詳しくは書けないのですが、とにかく、「入出力自体は2^100存在している」というところが勘違いなので、よく考えてみてください。そんなにたくさんはありません。 Q. sc1.h内で配列SC_probは, SC_prob[SC_MAXPROB][SC_NDATA] と宣言されていますが,問題文の6ページ目では int SC_prob[24] : 問題を格納する一次元整数配列 と記述されています。これは前者の方で解釈してよろしいでしょうか。 A. ご指摘のとおり、問題文にあやまりがありました。正しくは int SC_prob[SC_MAXPROB][SC_NDATA] : 問題を格納する二次元整数配列 となります。(注:再訂正版では修正しております) Q. 問題2.3.5「乱数について」にて、「乱数を必要とする プログラムでは必ず sc1.h に含まれるメルセンヌ・ツイスターを使うこと」 とありますが、乱数生成に該当関数genrand_int31()以外の 関数(std::rand()や自作の乱数生成関数)を用いた場合、 失格となりますか? A. 問題に「必ず」と書いてありますので、他の乱数を使ったプログラムは条件を満たしません Q. 問題2.3.4「補足解説と解法のヒント」にて、 「学習データのほうをランダムに作り」とありますが、 ランダムに作成する際に用いた乱数は、genrand_int31()によるものですか? また、その場合はinit_genrand(unsigned long s)で用いたシード値を 可能ならば教えてほしいです。 A. 問題作成にはgenrand_init32を使っていません Q. マルチスレッドは使用できますか? A. できません 評価に関して †Q. 乱数を使ったアルゴリズムの実行時間は乱数のシードによってばらつきが出るため、同じ程度の平均した速度を持つアルゴリズムが複数あった場合、乱数のシードによって勝つチームが決まります。このことを運営は考慮していますか? A. もちろん認識しています。私たちの事前の計算では50問程度実行すればプログラムの平均的な性能はわかりますので、予選の問題数を100問としています。場合によっては問題を追加して、測定します。 規則に関して †Q. インラインアセンブラの使用は許可されてますでしょうか? A. 使用言語としてアセンブラは認められていませんので、当然インラインでもだめです。 Q. pragmaの使用は許可されてますでしょうか? A. pragmaは言語仕様に含まれないので当然使用できません(正確にはpragmaの後に何を書けるかは言語仕様に含まれない) |