成長観察日記

競プロとかPythonとかに関しての成長記録

ABC279振り返り

ライブ2本参戦号泣レンジャー後のABC、3度目の3完でした!
ご覧くださいこの提出時間!Dはいすをあっためたぜ!

1つの目標地点であった250を超え
Cまでがめっちゃ簡単に感じ
順位、パフォ、レート、級、全てが過去最高になった!
でも、なんか不完全燃焼でくやしい。なんでだろ



A問題

atcoder.jp

問題概要

vとwでできた文字列があるよ。下の部分…そう、尖ってる部分…の個数を教えてね。

考察

  • vはとんがり1
  • wはとんがり2
  • vとwの個数調べて、wはかける2して足すか

コード

#入力
s = input()

# vとwの数を数える
x = s.count("v")
y = s.count("w")

# wの数は*2して出力
print(x+(y*2))

感想

ひさぶりにA問題1分で解けてうれしみがふかい



B問題

atcoder.jp

問題概要

2つの文字列(文字列①、文字列②)がある。文字列①の中に、文字列②はありまっか?

考察

あるかないかを答えるだけじゃ

コード

# 入力
s = input()
t = input()


#tがsの中にあったらYes、なければNo
if t in s:
  print('Yes')
else:
  print('No')

感想

めっちゃどじってsとtを逆に書いてて1WAした…
sample case1つWAしてたのに何故かそのまま提出した
目が悪くなりすぎてきた よくない!自然にかえろう!!



C問題

atcoder.jp

問題概要

.と#でできた2つの表、それぞれ列を入れ替え完全一致となるか?

考察

  • 並び替えてもいいってことは、ソートすればいっか
  • 受け取りの時に列と行を入れ替えておこうzipだあ〜

コード

# 入力 2つの表はzipにて列と行を入れ替えてる
h,w = map(int,input().split())
a = zip(*[input() for _ in range(h)])
b = zip(*[input() for _ in range(h)])


# ソートして一致したらよき
if sorted(a) == sorted(b):
  print('Yes')
else:
  print('No')

感想

何度も制約を見た(ソートしてTLEするのではないかと)
歴代のCの中でいちばんかんたんに感じて、本当にこれ今ちゃんとコンテストの問題解いてる??って二度見した
Yes or Noと、クエリ処理の問題得意なのかもしれない


D問題

atcoder.jp

問題概要

数式が打てないので詳しくは問題を見てください
Bx + A//(x+1)**0.5 = 0のxを求め代入し出せばよろしいやつです

考察

  • A<B + (A/2**0.5)の場合は確実にそのままAを出力だなあ
  • 入力例と、分母が整数になるからって理由で、bの次の平方数を探してみる
  • 入力例1はACできたけれど、うーん、違う気がする
  • あ、方程式だ〜!Bx + A//(x+1)**0.5 = 0 解けない…AC何個つくかだけ見るために提出しよっと(撃沈)

コンテスト後 - 方程式を入れると解いてくれるAIがある…だと…??そういえばあったな…

https://ja.wolframalpha.com/input?key=&i=d%2Fdx+%28Bx%2BA%2F%28sqrt%281+%2B+x%29%29%29+%3D%3D+0

うわああ!!!!

  • しかし1行で書こうとすると計算が違ってしまうため、必殺!分子と分母をそれぞれ変数に入れてみた
  • 近似値も調べた方がよさそうだったので、2つ作ってminを出そう
import math

a,b = map(int,input().split())


c = pow(a,(2/3)) # 分子
m = pow(2,(2/3)) * pow(b,(2/3)) # 分母
x = math.floor(c / m)-1 # 求めたいx

# 操作行わなくていいパターン
if a < b + (a/2**0.5):
  print(a)
# 操作行うパターン
else:
  x1 = (b*(x)) + (a/((x+1)**0.5))
  x2 = (b*(x+1)) + (a/((x+2)**0.5))
  print(min(x1,x2))

感想

むずい………数学、すごく、すごくて、すごいなあ
中学数学やったおかげで方程式が立てられるようになったから、次からはWolframさんに頼って解を見つけられそう。がんばる!

来週のburiodenは

友達と富山で共喰い(ぶりを食べる)をした後、長野に移動し、また別の友達と蕎麦を食べ、ABCで一回抜けて、終了後は星を見ながらココアを飲みます!!!

んーどうして!!?!?!?