no.349/350/351/352yukicoder3問目が分からなかった。干支の置物N個を1列に並べるときに、同じ干支が隣り合わないように並べることが出来るか判定せよ。干支#について、他のものをXとすると、#X#Xや#X#X#がギリギリOKなライン。多い干支の個数が半分より多ければ不可、そうでないなら可。d=vt0<v<1の速度でt秒間等速直線運動をした。小数点以下切り捨てで答えること。yukicoder解説floor(vt)で終わりと思いきや、誤差が出る問題でした。Pythonでもダメだったので、vが小数4桁までしかないことを利用し、vを文字列で受け取って、10000倍した整数に変換しました。http://yukicoder.me/submissions/81078Pythonのfloatは多倍長には自然にならないみたいです。白黒の市松模様の縦1列を1要素ずつ下にスライドしたり、横1列を1要素ずつ左にスライドしたりする。最終的に1番左上にある色は何色か。yukicoder解説H,W≦10000で何かいいデータ構造無いか考えてたけれども、N≦100万でスライドをO(1)で処理しないと間に合わない...思いつきませんでした。処理する順番を逆向きにして、最終的に1番左上にあるものはスタートはどこにあったかを探せばよいらしいです。カード並べ問題概要1〜Nの書かれたN枚のカードを数字の小さい順に机に置いて行く。机にM枚のカードが置いてある時、新しいカードは各カードの両端、もしくは間のM+1通りの置き方があり、カードを置くコストは両端なら1,カードの間なら両側のカードの積である。N枚のカードを置き終えた時のコストの期待値を求めよ。yukicoder解説N枚目を置くことを考えます。N-1枚のカードが机の上に置いてあり、その並び方は(N-1)!通りです。両端に置くときはコストは2なので、全並び方で合計2*(N-1)!。カードの間に置くとき、両側のカードの組み合わせは(N-1)C2=(N-1)(N-2)/2通り。これらの各積についてカードの位置は2枚のカードを1枚とみなして(N-2)通り、その他のカードの並び方が(N-3)!通りあるので、(1,2)の間にNを入れる通り数は全部で(N-2)!通り。他の組み合わせも同様です。これらの和は2*(N-1)!+(1*2+1*3+...+1*(N-1)+2*1+2*3+......+(N-1)*(N-3)+(N-1)*(N-2))*(N-2)*(N-3)!です。カードの並べ方が(N-1)!通り、新しくカードを置く置き方がN通りあるので、N!でこれを割ってあげればN枚目を置くことによって生じるコストの期待値が出せます。都合上、左右入れ替えて同じものは合わせて2で括ったうえで計算しています。http://yukicoder.me/submissions/81255余談ですが、この問題で最短実行時間を狙おうとして埋め込みましたが、むしろ遅くなりました。日)ネットの海に生息するらしいバーチャルグソクムシ。競プロとCTFをメインに、たまにEsolangを混ぜます。(7)月別アーカイブリンクGitHubはてなブログをはじめよう!Hyogaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。