『正欲』 - 朝井リョウ 感想

『正欲』を観て、「普通」という概念について深く考えさせられた。私たちが日常で当たり前と感じていることが、他の誰かにとっては全く異なることがある。この物語では、社会的な「普通」の枠に収まらない人々、例えばLGBTQやペドフィリアのような普通とは言われないような趣味をもつ人々の生きづらさや思考が描かれていた。

 

特に印象的だったのは、タイトルにもある『正欲』という概念。それは、たとえ周囲が理解し難いとしても、自分にとっての「普通」を受け入れ、それに従って生きることの大切さがわかったような気がする。これは、一見異端に見えるかもしれない存在や感情にも、そこには正当な理由が存在しているのだ。

 

私は、「この世に普通など存在しないのではないか」と感じた。それぞれの「普通」は個人の内面にだけ存在するもので、他人に押し付けるものではない。この物語は、多様性を受け入れ、理解することの重要性を感じ取れた。

競プロ典型90  024 - Select +/- One(★2)

024 - Select +/- One(★2)

問題

https://atcoder.jp/contests/typical90/tasks/typical90_x

考察

1 \leq N \leq 1000だから全ての整数を一つずつ見ても間に合いそう。

最短何回でABにできるかは以下で求められる。

\displaystyle x = \sum_{i=1}^{N} |A_i - B_i|

このxの値がK以下でかつ、Kxの差が偶数ならちょうどK回でABに一致させることができる。 以下のとおり。

\displaystyle x \leq K \, \text{and} \, (K - x) \, \% \, 2 == 0

提出したコード

N, K = map(int, input().split())

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

x = 0
for i in range(N):
  x += abs(A[i] - B[i])

if x <= K and (K-x) % 2 == 0:
  print("Yes")
else:
  print("No")

競プロ典型90 010 - Score Sum Queries(★2)

問題

https://atcoder.jp/contests/typical90/tasks/typical90_j

考察

学籍番号 L_j 〜 R_j番までの期末試験点数の合計を各組に対して求める問題。

 L_j 〜 R_j番目までの区間が連番なので累積和で求められそう。

と思ったが組が分かれており累積和が使いづらいので、ちょっと他のパターンを考えてみる。

いや、1組、2組それぞれの累積和で考えてみる。

各組の学籍番号が抜けている人がいる場合は点数を0として換算すれば累積和が使えそう。

例えば、このような組、点数の場合を考える。

1 72
2 78
2 94
1 23
2 89
1 40
1 75

1組  [72,0,0,23,0, 40,75] 2組  [0,78, 94,0, 89,0,0]

それぞれの組に対する累積和を用いれば答えが簡単に求められそう。

提出コード

N = int(input())

A = [0] * N
B = [0] * N

for i in range(N):
  C, P = map(int,input().split())
  if C == 1:
    A[i] = P
  elif C == 2:
    B[i] = P

A_cumsum = []
B_cumsum = []

for i in range(N):
  if i == 0:
    A_cumsum.append(A[i])
    B_cumsum.append(B[i])
  else:
    A_cumsum.append(A_cumsum[i-1] + A[i])
    B_cumsum.append(B_cumsum[i-1] + B[i])

Q = int(input())
for i in range(Q):
  L, R = map(int,input().split())
  L -= 1
  R -= 1

  if L == 0:
    ans_1 = A_cumsum[R]
    ans_2 = B_cumsum[R]
  else:
    ans_1 = A_cumsum[R] - A_cumsum[L-1]
    ans_2 = B_cumsum[R] - B_cumsum[L-1]


print(ans_1, ans_2)

競プロ典型90 004 - Cross Sum(★2)

問題

https://atcoder.jp/contests/typical90/tasks/typical90_d

考察

行列内のマス$(i,j)$にマス$(i,j)$と同じ行と列にあるマスに書かれている整数を全て合計した値を出力する。

つまり、マス$(i,j)$を中心とした行と列の和を求める問題。

まず、答え用の行列を保存する変数$B$を作成。 その際にBを0で初期化する。

次にマス$(i, j)$の行の和をそれぞれ求める。

その後、マス$(i, j)$を除いた列の和をそれぞれ求める。

解説みた

どうやらこのやり方を包除原理と呼ぶらしい。

「重複しているところを足したり引いたりする」ことを包除原理と呼ぶ

参考:https://drken1215.hatenablog.com/entry/2021/07/25/215000

提出コード

H, W = map(int,input().split())

A = [list(map(int,input().split())) for _ in range(H)]

B = [[0] * W for _ in range(H)]

for i in range(H):
  tmp_row_sum = sum(A[i])
  B[i] = [tmp_row_sum] * W

for j in range(W):
  tmp_col_sum = 0
  for i in range(H):
    tmp_col_sum += A[i][j]
  for i in range(H):
    B[i][j] += tmp_col_sum - A[i][j]

for i in range(H):
  print(*B[i])

『スタートライン』 〜 一歩踏み出せば 奇跡は起こる 〜 喜多川泰著

この本に出会えてよかった。

 

恋愛小説かと思いきやそうではない。素敵な話だった。

 

夢とはなんなのか、その夢に向かって一歩踏み出し、挑戦する勇気を与えてくれる物語。

 

すべての「出会い」を大切に、「面白い」と感じるものに全力で生きていこう。。。

 

 

 

 

『成瀬は天下を取りに行く』宮島未奈著 


あー、成瀬あかりちゃんのようになりたい。

 

間違いなく最高の主人公だ。

 

なにが最高かというと自分自身に常に全力なところ。

 

周りに馬鹿げてると思われることでも、成瀬あかりちゃんは常に全力なのだ。

 

重要なのは、夢や目標を達成する結果ではなく、その過程を楽しむことなんだと思わせてくれる1冊だった。