0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

0.はじめに

 下降の一途をたどるレートですが、まぁ実力的に
 こんなもんかと思い、心を入れ替えてC問題までを
 確実に解くように進めていこうと思いました。
 
 今回は、C問題までしか結局解けませんでしたが
 レートは+6と若干持ち直しました。

1.A - Piling Up

 Nを1ずつ増やしていき、100、200,300のいずれかをはじめに超えたタイミングが
 答えとなります。
 100,200,300を格納したリストを作り、先頭からNと比較し
 Nがそれぞれの数以下の時、その和人の差分を出力して終了。としました。

 https://atcoder.jp/contests/abc363/submissions/55769699

2.B - Japanese Cursed Doll

 呪いの日本人形がモチーフの問題・・・?
 の割にはあっさりと問題は語られていました。
 それぞれの人が、後何ミリ髪が伸びれば
 Tに達するか(あるいはすでに足しているか)を
 別リストに持ち、昇順ソート後
 そのリストの先頭からP番目の値を出力して終了としました。
 
 解説を読んだら、単純にリストをソートして、P番目の人が
 何ミリ伸ばせばいいかを計算するだけでよい事を理解しました・・・。

 https://atcoder.jp/contests/abc363/submissions/55778475

3.C - Avoid K Palindrome 2

 制限を見てとりあえず素直な実装でも時間足りるかもなーと実装
 
 【実装1】
  ・Sを一文字ずつリストとしてリストSに読みこみ
  ・itertools.permutationsでSの全順序組み合わせをリストpairに格納
  ・セットリストLにpairの各組み合わせを格納(重複は削除)
  ・Lの各組み合わせをK文字ずつチェックし、回文になっている個所が無かったら
   変数ansに1を加算
 
 上記実装で、10文字の入力例3も時間内に解けたので、とりあえず提出。
 →TLE2個と、ギリギリNG
 パターンとして、S内の文字がすべて異なる場合が一番時間がかかる&
 その場合は、絶対回文にならないので、実装1の前に、
 ・リストSの文字がすべて異なったら10文字の全組み合わせパターン数である
  3628800を出力
 という小ネタを仕込んでみたところ
 見事ACでした。
 
 我ながら小ずるい感じではありますが、C++だったら間に合うとゆっくり解説にもあったので
 一つのテクニックとして良しとします。

 https://atcoder.jp/contests/abc363/submissions/55796690

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?