投稿

ラベル(PCK)が付いた投稿を表示しています

PCK17-3

一覧・参加感想記事 問題公式PDF AOJ 1-5問目 6問目 7問目←ここ これは解説なのか? 7:積み荷の配置 これ本番中にできなかったの悔しいな…と思いつつ結構考慮しなければいけないケースが多くて実装時間かかった bitDP ですね。 蟻本にもタイル敷き詰めの問題がありましたが、 タイル敷き詰めを見たらbitDPだと思えるようになっておこうね(思っただけで終わった僕のようにならないように実装練習しようね) 解法 1行ずつ見ていく。 ある行を見ているとき、2行上は気にしなくていいね。 よって、横4マスのうち左3マスに左上が置かれているか、という情報を保持する。 状態数は1行に2^3 = 8個、1e4行で8e4通りなので十分間に合う。 ちょっと、そのうちちゃんとした図解作りかも知れないし作らないかもしれない。 英語間違ってるかも(弱)。 #include <iostream> #include <algorithm> using namespace std ; #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RFOR(i,a,b) for(int i=(b)-1;i>=(a);i--) #define RREP(i,n) RFOR(i,0,n) int bitcount[] = { 0 , 1 , 1 , 2 , 1 , 2 , 2 , 3 }; int h,n; bool b[ 4 ][ 10000 ]; int dp[ 2 ][ 1 << 3 ]; int main(){ cin >> h >> n; REP(i, n){ int x,y; cin >> x >> y; b[x][y] = true ; } REP(y, h- 1 ){ int *prev = dp[ 0 ]; int *now = dp[ 1 ]; ...

PCK17-2

一覧・参加感想記事 問題公式PDF AOJ 1-5問目 6問目←ここ 7問目 6:トランポリン まず10で割っておいて、左右にいくつ動けるか計算しておきます。それをd[i]とします 行きを考えます。 iを0からカウントアップさせていきます。 今iにいるとしたら、i+d[i]まで行けますね。 これをcangoとしましょう。 そのとき、今までのcangoより大きくなければ、 今までで最大の場所から飛べばいいので、更新しなくてもいいです。 こうやって次にいけなくなるか、n-1にたどり着いたら終了です。 n-1にたどり着いていたら、同様に帰りも計算します。 計算量はO(N)です。 #include <iostream> #include <algorithm> using namespace std ; #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RFOR(i,a,b) for(int i=(b)-1;i>=(a);i--) #define RREP(i,n) RFOR(i,0,n) const int _N = 3e5 + 100 ; int n; int d[_N]; int main(){ cin >> n; REP(i, n){ cin >> d[i]; d[i] /= 10 ; } // 行き int i= 0 , cango= 0 ; for (;i <= min(cango, n- 1 );i++){ cango = max(cango, i+d[i]); } if (cango<n){ cout << "no" << endl; return 0 ; } // 帰り i= 0 ;cango= 0 ; for (;i <= min(cango, ...

PCK17-1

一覧・参加感想記事 問題公式PDF AOJ 1-5問目←ここ 6問目 7問目 1-5問目はプログラミングの基礎の for文などの繰り返し if文などの条件分岐 不等式を使った条件式 剰余算(割ったあまり) とか押さえてればおkだよ ほかに、 三項演算子 関数 配列 とかも理解しておこうね 1:お年玉 平均。奇数は考えなくてOK。かならず確認するように! C++ #include <iostream> using namespace std ; int main(){ int a,b; cin >> a >> b; cout << (a+b)/ 2 << endl; } 2:買い物 分岐。ifが使えればとける。 algorithmのmaxはご自由に。 #include <iostream> #include <algorithm> using namespace std ; int main(){ int a,b,c; cin >> a >> b >> c; // 買えない // a+b = 二人の小遣い合計 if (c>a+b) cout << "NA" << endl; // 買える else cout << max(c-a, 0 ) << endl; } 3:9月X日 曜日を求める。7日周期だから7でMODをとればいい。このとき0日目(≡7日目)が何曜日か考えると早い(?) switch文でもいいけど、以下のような配列をつかってもかけるよ。 逆に日付30通り書いてもいいよ。 #include <iostream> #include <algorithm> using namespace std ; string days[] = { "thu" , "fri...

PCK17予選通過

やりました。 8完目は実質後輩(相方)の考察あってのこと 本選に行く方はどうか仲良くしてください PCKのグランプリでJOIにいきたい!w ← いや通っただけ奇跡ですほんと感謝 解法・解説ペタペタしていく 問題URLはすべてAOJ、解は僕のやつ 解説には、さらに初心者向けのコード例も書いているのでぜひみてね 予選 n 問題名 ソースURL 記事URL 1 お年玉 Solution PCK17-1 2 買い物 Solution 〃 3 9月X日 Solution 〃 4 予約システム Solution 〃 5 電線 Solution 〃 6 トランポリン Solution PCK17-2 7 積み荷の配置 Solution PCK17-3 8 [Solution] 9 [Solution] 10 [Solution] 11 [Solution] 随時更新 感想 完走!wをしたかった。(別世界) 順位表の下側が地域枠なんですね、把握しました。 地域枠だけどっていっているプロ、かなり強いんじゃないかな… 順位にねじめれて、なにはともあれ本選いけてよかったです! 楽しみだね!旅行だよ旅行! 近況 受験生なので受験ベンキョヌをする AtCoderぐらいはするよ、ていうか土日の夜ぐらいはゆっくり 書き上げた記事を公開してなかったのでサッと公開しといた そしてCTFの参考書を買った 楽しい~~ 読んでいこうかな Linuxの環境とかちゃんと整えていきたいな。

PCK2017予選参加記

イメージ
PCK2017予選参加記 お疲れ様です 高校一年生の後輩と参加してきました 8完3WAでした 順位表は予選終了30分前の16:00で止まりました 3WAは全て僕です。本当にすみませんでした。 (慌てすぎて実装ミスりまくった) 9問目を実装中に時間切れになりました 解いたのは1,2,3,4,5,6,8,10です 6問目はBITで殴ったのですが、SEG木で殴る方法も考えたのですが、 どうやらどっちもいらないようですね… 解説もしくはAOJでの公開を待ちたいと思います… やはりバグ埋め込みしてしまうのが良くないですね… 1位は全完0WAの開成高校です(神すぎるw) 平成29年9月15日(金)に、パソコン甲子園ウェブサイトで発表します。 出典 だそうです。 今回10が解けたのは、相方が DAGは入次数が0の点の数と、出次数が0の数の大きい方の数だけ有向辺を追加すると、グラフ全体が一つの閉路になる ことを導き出してくれました 証明を別記事で(彼に聞いてから)書こうかな にゃ 昨年度の結果URLをようやく見つけました http://web-ext.u-aizu.ac.jp/pc-concours/2016/final/f_finalteam.html 2017を2016に変えればいけるようですね。 せめてサイトマップに乗せてよ 年 1最低点 2公開チーム数 3全チーム数 2016 62 10 24 2015 55 10 25 2014 34 11 24 2013 58 15 32 1. 公開されている最低点 2. 点数公開されているチーム数 3. 新人賞以外の予選通過チーム数 九州なので地域取れるかー!?とか言ってましたが、 新人賞は1年生同士で構成されたチーム限定でした。 16:00時点でのボーダーは大体0WA6完ぐらい 例えば2016年の62点は大体8完です 石油王は8完0WA以上とおっしゃってます いろんなチーム名ありますね uniの前後にUnicodeの謎の羽がついたチームありましたが、Macだと見れませんでした Safariで見れまし...