ABC279振り返り
ライブ2本参戦号泣レンジャー後のABC、3度目の3完でした!
ご覧くださいこの提出時間!Dはいすをあっためたぜ!
1つの目標地点であった250を超え
Cまでがめっちゃ簡単に感じ
順位、パフォ、レート、級、全てが過去最高になった!
でも、なんか不完全燃焼でくやしい。なんでだろ
A問題
問題概要
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問題
問題概要
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問題
問題概要
.と#でできた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問題
問題概要
数式が打てないので詳しくは問題を見てください
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で一回抜けて、終了後は星を見ながらココアを飲みます!!!
んーどうして!!?!?!?