セイレンチュウ..

AtCoder ABC136

概要

AtCoderの記録です。全部Pythonで頑張ります。

この記事の対象

  • AtCoderについてある程度知っている人
  • Pythonがわかる人



本編

AtCoderとは

競技プログラミングコンテストを開催している会社です。 atcoder.jp

ABC136

20時くらいにうとうとしてしまって目が覚めたら23時でした。
不参加。後からDだけ解きました。

D Gathering Children

f:id:alumi-tan:20190805001813p:plain

RLという2文字の組み合わせに至った子供達は永遠にここの二つをさまようことになります。 移動が10100と非常に大きい回数繰り返されるので、どの子どももRLという二文字の場所のどれかに収束すると考えてよいです。

あるRLに注目してみると、この吸収ゾーンに収束する子供の数は、「RLRの左に連続して続くRの数」+「RLの右に連続して続くLの数」+2(RLにはじめにいた子供二人)となります。

例えば…LRRRLLLLLR…なら8人の子供が真ん中のRLに収束します。

まず連続するRにいた人の収束場所を考えてみます。
10100は偶数なので、…RRRRRRRL…という例で考えてみると、青文字のRにいた人は緑文字のRに、赤文字のRにいた人は黄文字のLに収束することがわかります。

RRRRRRRL

連続するLに関しては、Sを左右反転させて、LをRに、RをLに変えると、さっき考えたRの操作と同等です。

すなわち、コードは以下のようになります。

S = input()

N = len(S)
ans = [0 for i in range(len(S))]
R_cnt = L_cnt = 0

for i in range(N):
    if S[i] == 'R':
        if S[i+1] == 'L':
            ans[i] += R_cnt//2 + 1
            ans[i+1] += R_cnt//2 + 1
            R_cnt = 0
        else:
            R_cnt += 1

for i in range(N):
    if S[N-i] == 'L':
        if S[N-(i+1)] == 'R':
            ans[N-i] += L_cnt//2 + 1
            ans[N-(i+1)] += L_cnt//2 + 1
            L_cnt = 0
        else:
            L_cnt += 1

L = [str(int(i)) for i in ans]
print(' '.join(L))

N回ループが2つあります。1つ目は連続するRについての操作、2つ目は連続するLについての操作です。

まとめ

不参加なのでレート変わらずです。
院試頑張ります!

f:id:alumi-tan:20190728022954p:plain

赤信号はみんなで渡れば怖くないし、嫌いなものはみんなで叩けばぶっ壊せる

概要

表現の不自由展について思ったこと。

この記事の対象

  • 暇な人



本編

こんにちは、alumiです。

表現の不自由展が炎上しているらしいですね。

https://www.buzzfeed.com/jp/kotahatachi/aichi-triennale

少し調べてみたら平和の少女像が展示されていることが批判の原因のようなんですが、正直よくわかりません。

これっていけないことなんですか?

韓国で反日の象徴となっているものだとしても、「表現の不自由展」の中の一つの作品として、そこに訪れた誰かに何かを感じさせる力はあると思います。
そこに価値を見出して今回の展示を行なっているのだとしたら、僕はこの企画を支持します。

f:id:alumi-tan:20190802183702p:plain
たくさんの人がSNSで怒り狂って抗議の電話をしているのを見ると、やはり前に記事()に書いたように扇動され束になった民意の恐ろしさを感じます。

自分の不快感を表明するのは結構ですが、なぜ展示の撤去を求めるんでしょう…

自分が不快に感じるのが嫌ならば、見にいかない、情報をブロックするなど自分で身を守ればいい話ではないのでしょうか。
撤去を求めるのは、防衛から加害に変化してしまっていてよくないと思っています。

束になって飛びかかればなんでもできるんだと勘違いしている人たちが多すぎる。

確かに多数決は民主主義の原理みたいなものですが、表現の世界があえてそれを挑発するような形で「表現の不自由展」を開催したのならば、最後まで毅然としてこの展示を完遂させてほしいと思います。
まあでも、「表現の不自由展のとある展示がSNSで叩かれたことで政治家が動いて非公開に追い込まれる」なんて事態になっても最高に皮肉がきいて面白いので、それはそれでありかもしれませんね。ある意味最高の結末。

以上、多数派って怖いねって話でした。

まあでも僕みたいな(おそらく)少数派の意見の人が、非国民だとか言われて粛清されないだけ日本はまだ平和なのかもしれませんね。

茂木健一郎さんのブログが僕の考えに近かったのでリンクを貼っておきます。

lineblog.me

制御装置が比例制御でない場合の根軌跡

概要

制御の勉強で1個疑問が解けたので記しておきます。

この記事の対象

  • 似た疑問を持っている人



本編

厳密でない点などあるかもしれませんが、そこは目をつぶって書いていきます。

根軌跡とは

基本的なことは分かっている前提で、さらっと説明します。

f:id:alumi-tan:20190730151742p:plain
図1

図のようなフィードバック回路を考えます。rが入力、yが出力で、制御対象G(s)をフィードバックゲインKを操作して制御します。

このとき、システムの安定性は閉ループの伝達関数特性方程式を調べることでわかります。


\dfrac{KG(s)}{1+KG(s)H(s)}

一巡伝達関数は上の式になるので、特性方程式1+K(s)G(s)H(s)=0となります。
この特性根、つまり一巡伝達関数の極が全て負であればシステムが安定です。

そして、この特性根がフィードバックゲインKの値の変化によってどのように移動するかを複素平面上の軌跡として表したものが、根軌跡です。
K>0で動かします。

根軌跡法とは

根軌跡を書く1番直感的な方法は、特性方程式を解いてsをパラメータKを用いて表すことかと思います。

しかし、特性方程式sの高次式だと解析解を求めるのは難しかったり、複雑だったりして大変です。
そこで存在するのが根軌跡法です。

これは、根軌跡についての性質をまとめたルールブックのようなもので、図1の一巡伝達関数


KG(s)H(s)=\dfrac{K(s-z_1)(s-z_2)\cdots(s-z_m)}{(s-p_1)(s-p_2)\cdots(s-p_n)}

という形で表されるとき(既約とする)、

  1. 根軌跡は実軸対象である
  2. 根軌跡は、一巡伝達関数n個の極をスタートし、m個は零点に収束し、残りは発散する
  3. 実軸上の根軌跡は、零点と極で区切られる範囲のうち右から奇数番目の部分になる
  4. 発散する根軌跡は、\dfrac{1}{n-m} \left(\displaystyle\sum_i ^n p_i - \sum_j ^m z_j\right)を通り、\dfrac{N\pi}{n-m} (N=\pm 1, \pm 3 \cdots)の傾きの直線に漸近する
  5. 実軸上で根が分裂する点は、 \displaystyle\sum_i ^n \dfrac{1}{s-p_i} = \sum_j ^m \dfrac{1}{s-z_j}を満たす。

というものです。

これを頭に入れておくことで、根軌跡を書くのはかなり楽になります。

実際僕も恩恵を受けていたのですが、先日こういう問題に出くわしました。

f:id:alumi-tan:20190730161212p:plain
図2

これのgを動かしたときの根軌跡を求めよという問題です。
これはつまり、今まで考えてきた比例制御器の定数K

K(s)=\dfrac{5s+g}{s+2}

に変化したということです。

f:id:alumi-tan:20190730161338p:plain
図3

この場合の根軌跡も同じように考えていいのでしょうか。

制御器Kが定数でない場合の根軌跡

結論から言ってしまえば、全く同じように考えてはいけません。

しかし、この問題の場合、式変形して工夫することで同じように考えることができます。

図2のシステムの閉ループ伝達関数特性方程式を考えると、


\begin{align*}
1+K(s)G(s)H(s)&=1+\dfrac{5s+g}{s+2} \cdot \dfrac{1}{s(s-1)} \cdot 1 \\\
&=\dfrac{s^3+s^2+3s+g}{s(s-1)(s+2)}=0
\end{align*}

となります。

ここで、分子だけ考えて再び式変形してみます。


s^3+s^2+3s+g=0



\therefore \hspace{4mm}1+\dfrac{g}{s^3+s^2+3s}=0

と変形できますね。

これはつまり、特性方程式だけ考えるならば、フィードバックゲインgと[tex:G(s)H(s)=\dfrac{1}{s3+s2+3s}]というシステムと同等ということです。

このように、式変形により根軌跡法が使える別の特性方程式の形に持っていくことができました。

こうなればあとは普通に根軌跡が書けると思います。(図を描くのがめんどくさいので、省略します)

まとめ

根軌跡法は基本的に、図1のシステムに対し使える裏技みたいなもののようですが、うまく式変形することで使える形に持っていくことができるのだという個人的な結論に至りました。
1日くらい悩んで、周りに聞ける人もいなかったのでyahoo知恵袋で聞いたら、すっきりとした答えが返ってきて助かりました。

またなにかあれば記事書きます。

AtCoder ABC135

概要

AtCoderの記録です。全部Pythonで頑張ります。
今回はD,E,Fを解いてないです。すみません。

この記事の対象

  • AtCoderについてある程度知っている人
  • Pythonがある程度読める人



本編

AtCoderとは

競技プログラミングコンテストを開催している会社です。 atcoder.jp

ABC135

最近は生活が死にすぎて人生に絶望しています。
なんか生きながら死んでるみたい…。

A Harmony

f:id:alumi-tan:20190728021910p:plain

はい。

A,B = map(int,input().split())
if (A+B) % 2 == 0:
    print((A+B)//2)
else:
    print('IMPOSSIBLE')

B 0 or 1 Swap

f:id:alumi-tan:20190728021942p:plain

1~Nを並び替えた数列なので、昇順の並べ方が1通りしかありません。
よって、i番目の数字がiか否か調べていき、不一致が2つより多ければ'NO'となります。

N = int(input())
p = list(map(int,input().split()))

cnt = 0
for i in range(N):
    if p[i] != i+1:
        cnt += 1

if cnt > 2:
    print('NO')
else:
    print('YES')

C City Savors

f:id:alumi-tan:20190728022237p:plain

少し悩みました。
明確な根拠はよくわからないですが、1番目の勇者から順に、数字が小さい街のモンスターを優先して倒していくのが最善かな?と思い、それを実装したら通りました。

N = int(input())

A = list(map(int,input().split()))
B = list(map(int,input().split()))

cnt = 0
for i in range(N):
    if A[i] >= B[i]:
        cnt += B[i]
    else:
        cnt += A[i]
        if A[i+1] > B[i]-A[i]:
            cnt += B[i]-A[i]
            A[i+1] -= B[i]-A[i]
        else:
            cnt += A[i+1]
            A[i+1] = 0

print(cnt)

D Digits Parade

f:id:alumi-tan:20190728022445p:plain

今回D解けませんでした。悔しい〜。
13で割るということに何か意味があるのだろうと調べてみたところ、106≡100(mod13)だということで、文字列Sを6桁に集約する方針でずっと考えていたのですが、どうやらDPだったようですね。
DPの練習足りてないので、後で解き直しておこうと思います。

まとめ

AGCも前回参加して地味にレートを伸ばしていますが、パフォーマンスレートが1100とかなのでそろそろ伸びが止まってしまいそうです。
水色まではなんとか到達したいものですね。 それではまた次回!

f:id:alumi-tan:20190728022954p:plain

世界ではなく君を選ぶ物語【天気の子 感想・考察】

概要

映画「天気の子」を見てきた感想を書いていきます。

この記事の対象

  • 映画「天気の子」を見てきた人



本編

こんにちは、alumiです。 天気の子を見てきたので忘れないうちに感じたことを書きなぐっていこうと思います。

以下、完全にネタバレです。未視聴の方は絶対に読まないでください。自分で見てください。

これは映画を見てきた人たちに「あーわかる!」とか「どうなんだろう?」を提供したい記事です。
f:id:alumi-tan:20190725003245j:plain



一度しか見ていないので、細かいところが違う可能性がありますのでご注意ください。

ストーリー

まず、自分の覚えている限りでストーリーを書き下してみます。
細かいセリフや設定、展開など違うかもしれません。

伊豆諸島の神津島を飛び出してきた、16歳の家出少年の帆高は東京でお金もなしにホームレス生活を余儀なくされます。
マクドナルドでビッグマックを若い店員さんに奢ってもらったりしながらネカフェでなんとか生活をつなぎ、雨の降り続く異常気象中の東京で仕事のあてを探します。
その生活中に893の紛失した拳銃なんかも拾ってしまいます。(後々関係してきます) 最終的に、東京に来る際にフェリーで出会った須賀さんという人の名刺を頼りに訪ね、帆高はオカルト・ゴシップ誌ライターのお手伝いを始めます。

須賀さんの元、「100%の晴れ女」のオカルト情報集めに駆け回る帆高はある日、街角で、風俗店のスカウトに無理やり連れていかれそうになっている女の子を発見します。
その子はホームレス生活中にビッグマックを奢ってくれたあの女の子でした。
その子を助けようとした帆高はスカウトと取っ組み合いになり、拾った拳銃をなんとぶっ放してしまいます。
幸い弾丸は外れ、それを機にその場をその女の子と逃げた帆高は、女の子に拳銃を発砲したことを怒られながらも、助けてくれたお礼を言われます。女の子の名前は陽菜。

陽菜は不思議なことを言い出します。自分こそが100%の晴れ女だと。そして帆高の前で実際に雨をやませて晴れ間を作ります。
この出来事をきっかけに仲良くなる帆高と陽菜。
陽菜は1年前に母親を病気で亡くし、弟の凪と二人で暮らしていました。お金を稼ぐためにあの日も風俗店のスカウトについていこうとしていたのです。
それを聞いた帆高は陽菜の晴れ間を作る力を使ってビジネスをしようと思いつきます。
雨が2ヶ月間も降り続く東京では、たくさんの人が晴れ間を欲しており、依頼は殺到します。
依頼をこなしていくうちに、晴天が人の心まで晴れやかにしてくれることに天気の不思議さを感じる帆高。

転1

しかし、警察が帆高の発砲、そして失踪少年の捜索として陽菜や須賀さんにたどり着きます。
陽菜自身、弟と子供達だけで暮らしているのは問題らしく、補導されかけます。
須賀さんも警察の厄介になるのはごめんらしく、帆高に数万円を退職金として渡し、もう関わらないでくれ、と突き放します。
そこから陽菜、凪、帆高の逃避行が始まります。それに呼応するかのように勢いを増す異常気象。
雨は土砂降り、夏なのに雪まで降り出す始末です。
警察に捕まりそうになりながらも、なんとか子供だけで泊まれるラブホテルを発見した3人。しかし、陽菜の体にはある異常が起きていました。
それは晴れ間を作る力を使いすぎたためのもの。「私は人柱なんだ」と陽菜は話し始めます。

それは須賀さんの姪っ子の大学生、夏美さんから聞いたオカルトの話でした。
天と人間をつなぐ役割をする天気の巫女。それがいつの時代も存在していました。陽菜は1年前の雨の日に新宿の線路沿いのビルの屋上にある小さな神社の鳥居をくぐった際に空と繋がり、自分は天気の巫女になってしまったのだと推測します。
そして、天気の巫女は最後は人柱として天に消えてしまう運命でそうしなければ異常気象が治らないのだとか。
「帆高はこの雨が止んでくれたら嬉しい?」と聞く陽菜に帆高は「そりゃあ、まあ…」と返事をしてしまいます。
その次の朝、陽菜は布団から服だけを残して消えてしまっていました。
そのタイミングで警察も3人の居場所を突き止め、ホテルに突入してきます。残された凪と帆高は警察に連れていかれてしまいます。

転2

警察に連行される途中で帆高は、陽菜が実は自分よりも年下の15歳であったのに、18歳だと嘘をついていたことを知ります。
陽菜がいなくなった世界で、空はからっからに晴れていました。人々は久々の晴天に喜びます。
しかし、帆高だけが、その晴天は陽菜を犠牲にして得られたものであることを知っています。
それを警察にもまくし立てますが、刑事さんがそんな話を相手にするわけもなく、むしろ精神鑑定まで検討される始末。
それでも陽菜にもう一度会いたい、という強い思いから留置所から帆高は逃げ出します。
運よく通りかかった夏美さんにバイクで乗せてもらい、陽菜が空とつながってしまったあの新宿の廃ビルを目指します。そこに行けば帆高も空とつながってもう一度陽菜に会えるかもしれない、そんなわずかな望みをかけて。
廃ビルに着くと、須賀さんが待っていました。須賀さんは以前、帆高からその話を聞いていたため、帆高がここに来ると予想していたようです。
帆高を警察に戻るよう説得する須賀さん。しかし、帆高はどうしても屋上の神社に行こうとし、須賀さんと取っ組み合いになります(なんと拳銃を天に向けて発砲します)。そんな中警察も追いつき、帆高は完全に刑事たちに囲まれます。絶体絶命の状況ですが、できる限りの抵抗をして、陽菜に会いたい気持ちを叫ぶ帆高。そんな帆高の様子が、愛する人に会いたいという気持ちをいまだに抑えられずいる自分と重なって見えた須賀さんは、刑事たちにタックルし、帆高を助けます。
須賀さんも過去に妻を亡くし、ずっと会いたいと思いを引きずっていたのです。
もう一人刑事が立ちふさがりますが、保護観察下を元カノの力を借りて警察の目を抜け出してきた凪のタックルによってこれも突破します。
そして、ついにたどり着いた屋上の神社。帆高は鳥居をくぐります。

するとその瞬間、帆高の体は空の上に舞い上がって陽菜が見た景色と同じ景色をそこに見ます。積乱雲の上に広がる緑の世界に座り込んでいる陽菜をついに発見し、その手をつかみます。
「天気なんかずっと雨でいい。そんなものより俺は陽菜がそばにいてくれる方がずっといい」と空中で伝える帆高。

そして、気づくと二人はまたあの神社の鳥居に横たわっていました。
陽菜を取り戻したことで、再び土砂降りに戻る東京。そして、その雨は止むこと無く3年が過ぎ、東京はかなりの部分が水没しました。

3年後、高校を卒業した帆高は東京へ進学し、陽菜に会いにいきます。
雨が止まないことで、東京はかなりの部分が水没してしまいましたが、人によっては「昔はここら辺はほとんどが海だったんだ」などと、受け入れてはいるようです。
陽菜にあったら何を言えばいいのか。東京の水没の原因は陽菜自身であり、それを連れ戻した帆高なのです。
「気にするな」?違う気がします。
しかし、坂道の上で空に向かって祈っている久々に会う陽菜の姿を発見した帆高の口からその言葉は自然にあふれました。
「陽菜さん、僕たちは、大丈夫だ」

世界よりも、君を選ぶ

「すきだ」のシーンでボロ泣きした君の名は。と違って今回は途中まではあんまり泣いてなかったんです。
陽菜が消えてしまったシーンが辛くてうるっときたのと、陽菜と再び会えたシーンでよかったという嬉し涙を少し潤ませたくらいでした。

いや〜、でもEDでRADWIMPSの「大丈夫」が流れて一瞬にして涙のダムが崩壊した。

なんでか、今から書いていきます。

陽菜は15歳にして母親を亡くし、小学生の弟の面倒を見つつ稼がないといけない状況になりました。

そして、これに由来する陽菜の献身的な性格が垣間見られます。

晴れ間を届けるビジネスをやっている最中も、たくさんの人に喜んでもらえて、「自分の役割がわかった気がする」と帆高に語っていました。(セリフは少し違ったと思いますが)

そして、この雨を止めるためには自分は人柱にならないといけないと知ったときも泣きわめくわけでも無く、自分の中につらさをぐっと押し込めたまま、消えてしまったのです。
雲の上で、帆高から誕生日にもらった指輪を自分の透けてしまった体がつかめず落としてしまい、陽菜はつらさに顔を歪めます。
このシーンは見ていてとっても辛かったです。

帆高は、心のどこかできっと、それは陽菜が年上であるがゆえの強さだと思っていたのです。パトカーで陽菜が本当は15歳だったと知るまでは。

自分よりも年下の陽菜がつらい気持ちにじっと耐えている。それを知って、帆高の中である思いが生まれます。
もう一度彼女に会って伝えなくちゃいけない。

彼女だけが犠牲になって、もたらされた晴天にみんなが喜んでいる。
彼女もそれを悟って、自らの人柱としての運命を受け入れた。
「晴れの方が嬉しい」なんて軽率な返答をしてしまったがために、陽菜はその性格をもって誰かのために自分を犠牲にした。

確かに、須賀さんも言っていたように「晴れていた方がみんな嬉しい」のかもしれない。

でもそれは、少なくとも陽菜にとってはハッピーエンドなんかじゃない。帆高だってちっとも嬉しくない。

そして帆高は陽菜に再び会ったときに伝えるのです。

「もっと自分のために生きて」

と。

この映画にはこのような軸が一つ定められていたと思います。

陽菜は思い返せば母を亡くしてからずっと他人のため、と行動してきました。15歳の女の子がです。
みんなが喜ぶためには、みんなの望む晴天のためには自分が犠牲にならなければならない。
その選択はどれだけ辛かったことでしょうか。

それを自分のわがままだろうがなんだろうが何が何でも陽菜をつれもどしたいんだ、と強い気持ちで取り戻したのが帆高なわけです。

ED曲「大丈夫」の歌詞を見てみます。

世界が君の小さな肩に 乗っているのが
僕にだけは見えて 泣き出しそうでいると
 
「大丈夫?」ってさぁ 君が気付いてさ 聞くから
「大丈夫だよ」って 僕は慌てて言うけど
 
なんでそんなことを 言うんだよ
崩れそうなのは 君なのに
 
Source: https://www.lyrical-nonsense.com/lyrics/radwimps/daijoubu-movie-edit/

ここまでのことを踏まえると、「君」は陽菜で「僕」は帆高ですね。

自分の方が何倍も大変なのにむしろ他人に「大丈夫?」と言えてしまう陽菜の作中での運命のつらさが、RADWIMPSの悲しそうな裏声でフラッシュバックしてめちゃくちゃ泣いてしまいました。

そういえば、君の名は。のときも事前公開のスパークル前前前世もいい曲でしたが、EDのなんでもないやが最高でしたよね。ダークホース。

須賀さんについて

世界の仕組みを変えてでも陽菜にもう一度会いたいという帆高の比較対象として須賀さんはとても重要です。

須賀さんは過去に奥さんを亡くし、それでも「大事な人の順番を変えられない」と言っているように、奥さんのことをまだ思い続けていることがわかります。

彼は警察に追われる身となった帆高に「もう大人になれよ」と言います。
そして陽菜が消えたこと、もう一度陽菜に会うため留置所を抜け出しまでした帆高のことを刑事から聞き、思わず自分の指輪を触って、自分でも理由のわからない涙を流します。

きっとそれは自分の姿を重ねたのだと思っています。

姪の夏美が「自分に似てるからほっとけなかったんでしょ」と言っていることからも、須賀さんは昔は帆高のような人物だったことがわかります。
きっと奥さんを亡くしたときも思いを断ち切れず、しばらく引きずっていたのでしょう。

そこで、大人になれ、と自分に言い続けて必死に気持ちを切り替え大人になった須賀さん。そして今、それを絶対にそれを諦めない帆高がいる。
それを見て、きっと大人になるために押し殺してきた昔の須賀さんの心が涙を流したのだと思います。

廃ビルでも、初め須賀さんは帆高を説得しようとします。
しかし、どんなに壁が立ちふさがっても決して陽菜への気持ちを諦めない帆高を見て最後は須賀さんは「お前らがそいつに触るんじゃねえ!!」と刑事にタックルするのです。
それはきっと過去の自分を助ける、そんな感覚だったんじゃないでしょうか。

帆高は結局、自分の気持ちを諦めなかったのです。
どんなに立ち塞がれても、陽菜を救いたい、もう一度会いたいという思いを貫き通した結果がこの映画のエンドとなっています。

終わり方について

結局東京は水没してしまったわけです。不可逆エンド。

本当のハッピーエンドなら「陽菜を連れ戻したけど、御都合主義でなんかうまくいって晴れ間も戻りました」ともできたはずです。
でも新海監督はそれをしなかった。
そこに監督がインタビューで語った「賛否あると思う」という言葉の意味があると思います。

どちらかしかどうしても選べない状況で、どちらを選ぶのか、という話なわけです。
どちらも、という選択肢が存在してしまっては白けてしまいます。

そこで、あえて、多くの人が望まないことだとわかっていることの方を帆高は選択するのです。
ある意味自分勝手な選択結果のバッドエンドとも言えます。

でも、それでいいんだよ、という意味を込めて新海監督はこのエンドを選択したのだと思います。

もちろん、実際にそんな状況になったらたくさんの損害が発生することでしょう。
それについてあれこれ考えてしまうと手放しで喜べない視聴者が出てきてしまうかもしれません。
だから、そこについては、最後のシーンで「昔は関東平野も海だった」とおばあさんに語らせたり、須賀さんに「気にするな」と言わせたりしてフォローを入れて、みんなの求めてる文句なしハッピーエンドとは違うモヤモヤを薄めているんだと思います。

君の名は。が文句なしのハッピーエンドでヒットしたのに、次の作品はあえて賛否あるだろう終わり方にして、不評の嵐でも困るからフォローを入れていると言ってもいいかもしれませんね。

主人公たちの年齢が比較的幼い、というのもそのためかもしれません。
あの年頃では他人のために自己犠牲となれる陽菜がむしろ異常です。

だからあえてこう言いましょう。

「僕たちは大丈夫だ」と陽菜に声をかけるラストシーンは、少なくともこの選択が彼らにとっては後悔などするに値しない「大丈夫」な選択だったことを示す、確かなハッピーエンドだったのです。

個人的感想

今の気持ちを忘れないための日記みたいなものです。私用です。

新宿のTOHOシネマズで見てきました。
実は大学2年生のときに神津島東海汽船を利用して行ったことがあって、冒頭のフェリーのシーンから興奮してました。

あと、歌舞伎町とか新宿周辺が非常にリアルに描写されていて、「あれ、ひょっとして帰るときに聖地巡礼できる??」みたいな感じでした。笑

新海監督は「君の名は。」で予告編から完全に映画で裏切ってくるという前科があるので、今回は絶対に騙されないぞ、と思い見てしまった節があります。

その結果、初めの病院のシーンから、(このベッドに横たわっている人物は実は帆高くんで夢の中の話なのでは?)とか(陽菜が空とつながったとき、実は陽菜は足を滑らせて死んでしまっていたのでは?)とか無駄に斜めな考察を伸ばしてしまって、実際はストレートな物語で、ある意味でまた裏切られてしまったみたいです。笑

東京という普段から利用している身近な場所が舞台で、風景もものすごくリアルなので、あ、ここあの場所じゃない?と予想をつけたり、陽菜の作る料理が美味しそうだったり、猫の「雨」が見事な成長(劣化?笑)を遂げていたり、途中から帆高が凪のことをナチュラルに先輩と呼んでいたり、瀧くんと三葉ちゃんががっつり出てきたり、夏美ちゃんの就活エピソードはこっちの胸が痛くなるくらい共感できたり、小ネタがたくさん含まれていて終始楽しませてもらえました。

とても満足度の高い映画でした。

個人的には水没した東京については、めちゃくちゃ水中を探検してみたいのでそこまでバッドエンドとは思っていません。
現実的に色々考えたらけっこうな損失でしょうけどね。 あと町の水没というワードからは「つみきのいえ」を思い出しました。

凪くんの言ってた「付き合うまでははっきりと、付き合ってからは曖昧と」は深すぎて何も言えないので僕も先輩と呼ばせていただくことにします。笑

ツイッター上で分岐ルート映画だったと一部で騒がれているようですが、確かにその通りで、例えばFateのHeaven's Feelとかと似ている気がします。
あれも士郎が「桜だけの正義の味方になる」という選択をしたルートなわけですし。

そんな感じで、賛否両論大歓迎とは言いつつも今回も評価は高いんじゃないかと思います。
あと、RADWIMPSは天才。歌詞付き音楽を演出として用いて大事な場面を盛り上げるという手法が今回もできたのは、やはりグランドエスケープのような素晴らしい楽曲をRADWIMPSが作ってくれたからこそだと思います。グランドエスケープのサビの入り前のセリフかっこよすぎたなぁ…

また、感想コメントなどもお待ちしております!

それでは!

渡る世間は鬼ばかり

概要

最近の炎上ごとを見ていて思ったことです。

この記事の対象

  • 暇な人
  • ちゃんと議論をする気がある人
    f:id:alumi-tan:20190721192540p:plain

    本編

    こんにちは、alumiです。
    最近よく有名人がネットで炎上して謹慎なんて記事をよく見かけます。
    今回は「宮迫たちの闇営業問題」「レペゼン地球の炎上商法」を具体例に、自分の意見を書いていきたいと思います。

割と世間一般から見ると過激だったり、異端だったりする意見だと思います。
しかし「なんだこれは」と思った方も、なるべく冷静に読んで、なるべく理路整然とした反応を下さると嬉しいです。

闇営業問題について

人は見たいように見て、聞きたいように聞いて、信じたいものを信じる。

20世紀少年だったか、こんな言葉がありました。

宮迫さんはまさにこんな感じに、自分の忘れていた(本人主張)直営業が実は反社組織相手だったことを知り、ギャラをもらった記憶が曖昧だったのいいことに、「ノーギャラ」と嘘をつきました。
本人の言い訳によると、打ち上げ代とかで結構ギャラを使ったからほぼノーギャラ、という解釈でそう世間に説明したわけです。

実際こういった嘘をついたことがある人は世の中に大勢いるかと思います。本当は宿題はほぼせずに遊んでいたけど、少しだけやったのもまた事実なので「少しやったよ」→「やったよ」と「少し」の部分を心の中で削って発信するのです。
後ろめたさを消す裏技です。
「ほぼ」とか「多分」とか日本語にはニュアンスをぼかす言葉が多くありますから、嘘と事実を織り交ぜた言葉をまず作っておいて、後ろめたくない、後から言い訳しやすい嘘に錬金するのです。

普通の人間は心の弱いところもあるので、この手法で嘘をつく行為自体をめちゃくちゃに非難しようとは思いません。
しかし、宮迫さんほどの有名人が、世間の注目を浴びている状態でこの嘘をついてしまったのは、まさに初動をミスったとしか言いようがありません。

まず、初動で宮迫さんには二つの選択肢がありました。
もちろん、本当のことを話すか、お金はもらっていないと嘘をつくかの2択です。

嘘がバレないという前提の元ならば、もしかすると前者より後者の方が叩かれ方は穏やかかもしれません。実際本人もそう考えて後者を選択したのかもしれないです。

しかし、後者には嘘がバレた場合、激しく叩かれるというリスクが潜んでいます。これを彼は低く見積もりすぎていたということです。

嘘はバレなければ嘘ではありません。シュレディンガーの猫みたいな話です。
ですので、嘘をついたのなら絶対にバレてはいけませんでした。

しかし、週刊誌の追撃により、その嘘はバレてしまった。そして結果的に本当のことを話すという選択肢より激しく非難が集中してしまう結果となったわけです。

つまり彼は選択に失敗しました。

しかし、僕が今回話したいのはここからです。

彼がしたことを改めてまとめてみると、「反社会的組織集団と知らずに直営業に行って、報酬を受けとった」です。
これが現時点(7/21)での真実です。

そして彼が受けた処遇は「吉本からの契約解除」です。

これだけ見るとあまりに釣り合っていないと感じるのはおそらく僕だけじゃないでしょう。

では何が彼をここまでの処遇に至らしめたのか。
それは世間の怒りに他ならないかと思います。

宮迫の番組はもう見ないと発言するだの、スポンサーに苦情の電話を入れるだの、世間が叩きに叩いた結果がこれなんです。

叩いている人が間違っているとは絶対に言いません。宮迫さんが詐欺集団からお金をもらっていた、そしてそのことを隠していたことは紛れもない事実です。

しかし、叩いている人の言う「詐欺被害にあった人の気持ちを考えろ」とか「嘘をつくなんて最低だ」とかって本当に心の底から思っていることですか?

詐欺被害にあったことのある身内や知り合いがいないのに、その「詐欺被害にあった誰か」を慮ってそんなに怒れるんですか?しかも実行犯でもない人を。
嘘をつくなんて最低だ、確かに最低かもしれません。しかしおそらくあなたも過去幾度となくついてきただろう嘘をどうしてそんなにドヤ顔で叩けるんですか?

全員が全員、確かなオリジナルの根拠を持って叩いているとは思えません。

ここである仮説が立つわけです。

  • 世間の人の怒りには2種類ある。

一つ目は「怒るだけの理由がある人」の本心からの怒りです。彼らは自分の本心から理由を持って怒ります。今回の場合、詐欺被害に実際に自分や知り合いがあった人でしょうか。

そして二つ目は、それを見た多くの「誰かが叩いているから叩く人」です。ネットを中心に不快感をあらわにします。ここには「もともとその人のことがあまり好きじゃなかった人」や「流されやすい人」が含まれています。
彼らは、自分が被害を受けたわけではないが社会的には悪いことをしたという宮迫に対して圧倒的に優位な立場だから叩く。さらに嘘がバレて相手は完全に後ろめたく反撃もできないから叩く。安全なところからなんとなくで叩きます。

この二次的に怒れる人たちをまとめて潜在的私刑犯と呼びましょう。多くの場合、この潜在的私刑犯の方が数が多いです。

こうして潜在的私刑犯の中で、怒りがどんどん伝染していきます。
もちろん、悪いことをしている側は反論なんかできませんし、いちいち個人を相手にしてもいられません。サンドバッグ状態です。
この安心感も伝染を加速させます。

そんな構図が出来上がっている気がします。

問題は怒りの伝染スピードです。Twitterでみるみるうちに拡散してしまう。
それゆえ過剰に怒りが伝わって、悪いことをした奴は昔以上に迅速に激しく叩かれるのです。

これが宮迫さんが契約解除にまで至ったカラクリだと考えます。

潜在的私刑犯、つまりはなりを潜めているいじめっ子たちですが、叩くやつは反応が見られる相手が良いです。自分が(一方的にでも)よく知っている人がいい。できればそんなに好きじゃなかった人がいい。自分より何か恵まれている人を叩きたい。

有名人はこれらの条件に非常にマッチします。
露出機会が多いので反応せざるを得ないですし、みんなから知られている。
お金をいっぱいもらっているとか、イケメンや美女と付き合っているとか、あるいは単に容姿端麗だったり、巧みなトークスキルを持っていたり。

こういう理由で有名人は常に潜在的私刑犯から叩く機会を狙われていると言っても良いでしょう。

レペゼン地球のドッキリについて

レペゼン地球というDJ集団がいます。このリーダーである、DJ社長という人物が事務所の後輩の女性にセクハラ、パワハラをしたとして19日に告発されました。

DJ社長は見た目や普段の行いも相まって、「キモいと思ってた」とか「最低」とめちゃくちゃに非難されました。

しかし、実はこれは女性側もグルで、活動休止していたレペゼン地球の復活に際した壮大な炎上商法だったと20日に明かされます。

これを受けた世間の反応は、「セクハラやパワハラをネタにするなんて最悪」「これからセクハラを告発したい人がしづらくなる」と批判にまたあふれています。そして、その怒りは飛び火して、一連の行為に賞賛の意を示した有名人まで叩かれ始めています。
わかるんです。そういう意見は社会的にとても正しい。その点については反論の余地はありません。

でも、待ってください。また、伝染しかけてませんか?

確かに、「セクハラやパワハラの告発を炎上商法の材料に使ってしまったら、羊飼いの狼少年ごとく、他のYouTuberやエンターテイナーが告発した際に炎上商法かと疑われてしまう恐れがある」。

でも、僕はこの理論で怒っている人の中に少なからず、1番の本心は「騙されて不快になった」「女性を心配していたのにコケにされて腹が立った」という人がいると思っています。

シンプルに「女性への心配を裏切られたから」とか「元からのアンチで意気揚々と叩いていたらまんまと騙されて煽られたから」とかで叩けばいいのに、プライドが許さないのか、それだと叩く優位性が得られないのか、社会的な理由を建前に使って叩いている人たちが絶対にいます。

そもそもドッキリの初動の嘘告発も「普段から調子乗って女をたくさん抱いてるから嫌い」「お金をいっぱいもらってるから嫌い」みたいな潜在的私刑犯たちが二次的にこれ見よがしに群がって叩いていたと思います。
この人たちがさらにコケにされて怒り狂って、でも悔しいから社会的正論を武器に叩いているのです。

社会的正論を武器にされると議論になりません。この一連の行為は賛否両論あっていいと思いますし、賞賛した人までもが叩かれるのは明らかに異常だと思います。
僕自身、情けないことにセクハラパワハラ被害者への思慮が少し浅く(実体験の乏しさからかもしれません)、初めは手放しで一連のマーケティング手法をあっぱれと感じました。

そして今は、叩いている人の意見も理解した上で、僕は、マーケティング手法という視点からはやはりすごいと思っています。
こんなことを言うと、正論を振りかざした人たちがお前は社会性のないやつだ、やばいやつだ、と寄ってくると思います。 しかし、社会的正論でマウントをとって欲しくないのです。
僕の意見は完全に無視なのでしょうか。 議論をして、この視点から見たここはすごいところだけど、ここはダメな点だよね、と冷静に分析することはできないのでしょうか。

正論を振りかざして叩くことと議論をすることは違います。

その違いを見極められる人が増えてほしいし、僕自身もそうなりたいと思っている。

7/26追記:
レペゼンのメットライフドーム公演が中止になったようです。
うーん。憶測でしかないですが、一度決まっていた公演が白紙に戻るというのは相当なクレームが入った、あるいは大きな権力から圧力がかかったと予想できます。
心配していた怒りの伝染が結局起こってしまったということですね。
個人的には今回の炎上騒動の代償として、すでに決まっていたドーム公演の中止が釣り合っているとは思いません。
宮迫さんの場合と同じで「やられたら倍返し」に近いものに感じます。

騒動への謝罪を求めたり、不快感を示すのはわかりますが、それに対する報復のようなことをする人、ましてその結果を見てTwitterで「よかった」などと言ってる人は、僕は理解することはできません。
改めて、現代社会の異常性を強く感じました。

今の社会はそういうものなんだと、宮迫さんにしろ、レペゼン地球にしろ、教訓にして次はリスクを考えて行動してくれることを望みます。

まとめ

もうけっこう前のドラマになりますが、リーガルハイというコメディ系法律ドラマにこんなセリフがあります。

本当の悪魔とは、束になったときの民意だよ

この通りなんです。
束になって、叩いたハンマーの威力は何よりも重い。
しかも今はネット社会です。恐るべきスピードでハンマーは大きくなっていく。

最近でも、3年A組というドラマでそのテーマを扱っていますよね?
そろそろ自分たちで気づいてもいい頃だと思います。

自分の中の対象を叩きたい気持ちは何からくるものなのか、自分はしっかりと信念を持って叩けるのか。
なんとなくでTwitterに投稿する前に、一度よく考えてみることが潜在的私刑犯を脱して、一人の意見主張者になる一つのきっかけだと思います。

AtCoder ABC134

概要

AtCoderの記録です。全部Pythonで頑張ります。
Fは解いてないです。

この記事の対象

  • AtCoderについてある程度知っている人
  • Pythonがある程度読める人



本編

AtCoderとは

競技プログラミングコンテストを開催している会社です。 atcoder.jp

ABC134

最近は信号処理の勉強をしています。
FS,FT,DTFT,DFTの関係が綺麗だな〜なんて感動してますが、院試まで時間なさすぎて焦ってます。
さて、そんなわけですがABCは今はまだ参加。

A Dodecagon

f:id:alumi-tan:20190721003140p:plain

はい。

r = int(input())
print(3*r*r)

B Golden Apple

f:id:alumi-tan:20190721003250p:plain

一人の監視員が見られる範囲を最初2Dだと勘違いしてWAやらかしました。

N,D = map(int,input().split())
if N%(2*D+1) == 0:
    print(N//(2*D+1))
else:
    print(N//(2*D+1)+1)

C Exception Handling

f:id:alumi-tan:20190721003400p:plain

今回はCまでかなり簡単ですね。
1番目に大きい数とそのindex、2番目に大きい数、この3つが把握できれば出力できます。

N = int(input())

f = 0
s = 0
index = 0
for i in range(N):
    a = int(input())
    if a > f:
        index = i
        s = f
        f = a
    elif a > s:
        s = a

for i in range(N):
    if i == index:
        print(s)
    else:
        print(f)

D Preparing Boxes

f:id:alumi-tan:20190721003559p:plain

これははじめ解く方法がよくわからなくて時間を溶かしてしまいました。
数字の大きい順に定めていくと、必ず辻褄を合わせたボールの入れ方ができます。
この手法だとオーダーがN2とかになりそうだななんて勝手に悩んでたんですがそうでもなかったようです。

N = int(input())
a = list(map(int,input().split()))

b = [0 for i in range(N)]

def check(i):
    cnt = 0
    n = i
    while n <= N:
        cnt += b[n-1]
        n += i
    return cnt

for i in range(N-1,-1,-1):
    if (a[i] + check(i+1))%2 == 1:
        b[i] = 1

ans = []
cnt = 0
for i in range(N):
    if b[i] == 1:
        cnt += 1
        ans.append(i+1)

print(cnt)
L = [str(int(i)) for i in ans]
print(' '.join(L))

E Sequence Decomposing

さて、Dまで1時間くらいで解き終わって、いつもどおりだったなと思いYouTube見てたんですけど、Eもよく見たらグラフの問題じゃなくて解けそうだったので手を出すことにしました。
結論から言えば間に合いませんでした。Pythonのbisectが降順配列にも対応してたらいけたと思うんだけどな〜。悔しい。

考え方としては、空の配列を用意し、出てくる数字xを順番に

  1. 配列にxより小さい数字yがあるなら、yをxに換える(ただしx-yが出来るだけ小さくなるようにyを選ぶ。yが同じ値で複数個あるときは1番右にあるyを選択する。)
  2. 配列にxより小さい数字がないなら、xを配列にappendする

この操作を順番に行っていくと、最後に配列に残った数字の数が必要な色の数となります。
また、配列は常に降順で保たれます。(コード的にはinsertを使うと時間が間に合わないので、appendを使います。そのため降順ソートになります)
bisectは昇順ソートにしか対応していないので、自分で改造します。(これに少し手こずってしまいました)
まあ、普通に二分探索なんですけどね。パッと書けないあたりまだまだだな、と痛感しました。

N = int(input())

def bisect_right_reverse(a, x, lo=0, hi=None):
    if lo < 0:
        raise ValueError('lo must be non-negative')
    if hi is None:
        hi = len(a)
    while lo < hi:
        mid = (lo+hi)//2
        if x > a[mid]: hi = mid
        else: lo = mid+1
    return hi

c = []
for i in range(N):
    n = int(input())
    index = bisect_right_reverse(c,n)
    print(index)
    if index == len(c):
        c.append(n)
    else:
        c[index] = n
    print(c)

print(len(c))

まとめ

前回2足りなかった緑についに到達です!スローではありますがのんびりとレートを伸ばせてます。
そろそろEも解くようにしないといけなさそうなんで、次からはなるべく挑戦してみます。
その前に院試勉強を頑張らないとですが…
それではまた次回!

f:id:alumi-tan:20190721005306p:plain