yokobuttonの不定期で競技プログラミングをするブログ

不定期で解けた競技プログラミングコンテストの問題を載せています。

AtCoder Beginner Contest 243 C - Collision 2

問題の要約 xy座標平面上にN人の人がいる。人iは(Xi,Yi)にいる。 L,Rからなる長さNの文字列Sがある。 人iはSi=Rならば右向き(x軸の正の向き)に、Si=Lならば左向き(x軸の負の向き)に、一斉に同じ速度で歩きは始める。 反対の向きに歩いている人同士が同じ地点…

AtCoder Beginner Contest 243 B - Hit and Blow

問題の要約 長さNの整数列A=(A1,A2,...,AN),B=(B1,B2,...,BN)が与えられる。 次の2つを出力せよ。 1.AにもBにも含まれ、その位置も一致している整数の個数。 2.AにもBにも含まれるが、その位置は異なる整数の個数。制約 1<=N<=1000 1<=Ai,Bi<=10^9 Aiはすべ…

AtCoder Beginner Contest 243 A - Shampoo

問題の要約 父、母、T君の順に風呂に入り、それぞれシャンプーをA,B,Cミリリットル使う。 今朝の時点で、ボトルにはVミリリットルのシャンプーが残っていた。 このまま、補充しないとき、初めてシャンプーが不足するのは誰が使おうとしたときか?制約 1<=V,A,…

c++のコンテナと主要な関数

C++

vector:動的な配列。 size():要素の実際の数を返す。 empty():空であるかどうかを返す。 push_back(elem):elemのコピーを末尾に追加する。 pop_back():最後の要素を削除する。 back():最後の要素を返す。 front():最初の要素を返す。 deque:両端が開いている…

AtCoder Beginner Contest 241(Sponsored by Panasonic)C - Connect 6

問題の要約 N行N列のマス目があり、それぞれマスは白または黒で塗られている。 マス目の状態はN個の文字列Siで表され、Siのj文字目が#であることはマス目の上からi行目、左からj列目のマスが黒く塗られていることを、.であることは白く塗られていることをさ…

AtCoder Beginner Contest 241(Sponsored by Panasonic)B - Pasta

問題の要約 N本の麵からなるパスタがあり、i本目の麺の長さはAi。 これからM日間の食事計画を立てており、i日目にはパスタの麺のうち長さがちょうどBiであるようなものを1本選び、食べる。 もし、1日目からM日目の間に1日でもそのような麵が無い日があれば、…

AtCoder Beginner Contest 241(Sponsored by Panasonic)A - Digit Machine

問題の要約 1桁の数字が表示される画面と、ボタンからなる機械がある。 画面に数字kが表示されているとき、ボタンを1回押すと画面の数字がakに変わる。 0が表示されている状態からボタンを3回押すと、画面には何が表示されるか?制約 0<=ai<=9入力 a0 a1 ... …

「作って理解するOS」でmingw-w64用のプログラムを書いてみた パート2

「作って理解するOS」という書籍はNASMでプログラムが書かれているのですが、そのプログラムをmingw-w64用に書いてみたという記事のパート2です。 ようやく16章までいったので、参考として、そこまでのソースコードの一部を記事に載せます。特に難しかった箇…

「作って理解するOS」でmingw-w64用のプログラムを書いてみた

「作って理解するOS」という書籍はNASMでプログラムが書かれているのですが、そのプログラムをmingw-w64用に書いてみたという記事です。 まだ14章12節までしかプログラムをしていないのですが、最初のブートプログラムをイメージファイルにする箇所に時間が…

AtCoder Beginner Contest 237 C - kasaka

問題の要約 英小文字からなる文字列Sが与えられる。Sの先頭にaをいくつか(0個でもよい)付け加えて回文にすることができるか判定せよ。制約 1<=|S|<=10^6入力 S考え方 1,Sにaの挿入と削除をしてaの数を合わせてから、その次に回文を判定したい。 Sの先頭にaを…

AtCoder Beginner Contest 237 B - Matrix Transposition

問題の要約 H行W列の行列Aが与えられる。 Aの上からi行目、左からj列目の要素はAi,j。 Aの転置行列Bを出力しろ。制約 1<=H,W<=10^5 H*W<=10^5 1<=Ai,j<=10^9入力 H W A1,1 ... A1,W ... AH,1 ... AH,W考え方 1,制約のH*W<=10^5より二重のfor文を使ってAからB…

AtCoder Beginner Contest 237 A - Not Overflow

問題の要約 整数Nが与えられる。Nが-2^31以上かる2^31未満ならばYesを、そうでないならばNoを出力しろ制約 -2^63<=N<2^63入力 N考え方 1,intやlong longでbit数を考えるのではなく、doubleで受け取りdoubleで考える。 2,後は単純なif文での条件分岐。実際の…

AtCoder Beginner Contest 236 C - Route Map

問題の要約 鉄道のとある路線にはN個の駅が存在し、始点から終点に向かってi(1<=i<=N)番目の駅の名前はSi。 普通列車は全ての駅に止まるが、急行列車は全ての駅に止まるとは限らない。 急行列車はM(M<=N)個の駅にのみ止まり、j(1<=j<=M)番目に止まる駅の名前…

AtCoder Beginner Contest 236 B - Who is missing?

問題の要約 整数1,2,...,Nが書かれたカードが4枚ずつ、合計4N枚ある。 これらのカードをシャッフルしたのち1枚のカードを選んで抜き取り、残りの4N-1枚を束にして渡された。 渡された束のi(1<=i<=4N-1)枚目のカードには、整数Aiが書かれている。 抜き取られ…

AtCoder Beginner Contest 236 A - chukodai

問題の要約 英小文字からなる文字列Sが与えられる。 Sの先頭からs文字目とb文字目を入れ替えて得られる文字列を出力せよ。制約 2<=|S|<=10 1<=a<b<=|S|入力 S a b考え方 1,C++には値を入れ替えるswap関数があるのでそれを使う。 実際のプログラム#include<iostream>#include<string> using namespace std; int main(){ string S; cin >> S; int a,b; cin >> a >> b; swap(S[a-1],S[b-1])</string></b<=|s|入力>…

JavaScriptで倒立振子(マウスで操作版)

#canvas{ border:1px solid #000000; } p.game{ text-align: center; } マウスをBoard(最初に中央にある四角のもの)の左右にマウスを動かすと、動かした分だけBoardにx方向の力が加わります。 左右の壁にボールがぶつかると"GAME OVER"になります。 const ca…

AtCoder Beginner Contest 234 D - Prefix K-th Max

問題の要約 (1,2,...,N)の順列P=(P1,P2,...,PN)、および正整数Kが与えられる。 i=K,K+1,...,Nについて、以下を求めよ。 ・Pの先頭i項のうち、K番目に大きい値制約 1<=K<=N<=5*10^5入力 N K P1 P2 ... PN考え方 1,Piの値は(1,2,...,N)の順列なので重複はない…

AtCoder Beginner Contest 234 C - Happy New Year!

問題の要約 10進数で表記したときに0,2のみからなる正整数のうち、K番目に小さいものを求めよ。制約 1<=K<=10^18入力 K考え方 1,簡単な実験(例えば15番目くらいまで書き出してみるなど)で2と0の組み合わせとKの2進数とが対応していることに気づく。 2,入力例…

AtCoder Beginner Contest 234 B - Longest Segment

問題の要約 二次元平面上にN個の点がある。i個目の点の座標は(xi,yi)である。 この中から2個の点を選ぶとき、それらを結ぶ線分の長さの最大値を求めよ。制約 2<=N<=100 -1000<=xi,yi<=1000 (xi,yi)≠(xj,yj)(i≠j)入力 N x1 y1 ... xN yN出力 想定解との絶対誤…

AtCoder Beginner Contest 234 A - Weird Function

問題の要約 関数fをf(x)=x^2+2*x+3と定義する。 整数tが入力されるので、f(f(f(t)+t)+f(f(t)))を求めよ。 ただし、答えは2*10^9以下の整数であることが保証される。制約 0<=t<=10入力 t考え方 1,関数を作り、それにtを代入して答えを出力。実際のプログラム#…

JavaScriptでブロックくずしゲーム

下のURLを参考に「そのままのJavaScriptを使ったブロックくずしゲーム」をつくりました。 https://developer.mozilla.org/ja/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript #canvas{ border:1px solid #000000; } /*alert("GAME START!");*/ let s…

AtCoder Beginner Contest 233 C - Product

問題の要約 N個の袋がある。 袋iにはLi個のボールが入っていて、袋iのj(1<=j<=Li)番目のボールには正の整数ai,jが書かれている。 それぞれの袋から1つずつボールを取り出す。 取り出したボールに書かれた数の総積がXになるような取り出し方は何通りあるか? …

AtCoder Beginner Contest 233 B - A Reverse

問題の要約 整数L,Rと、英小文字のみからなる文字列Sが与えられる。 SのL文字目からR文字目までの部分を反転した文字列を出力しろ。制約 1<=|S|<=10^5 1<=L<=R<=|S|入力 L R S考え方 1,C++の場合、文字列を逆順にするにはreverse関数を使うことができる。実…

AtCoder Beginner Contest 233 A - 10yen Stamp

問題の要約 手紙を出したいので、X円切手が1枚だけ貼られた封筒を用意した。 手紙を届けるためには、貼られている切手の総額がY円以上である必要がある。 この封筒に10円切手を何枚か貼り足すことで、貼られている切手の総額をY円以上にしたい。 最小で何枚…

M-SOLUTIONS プロコンオープン2021(AtCoder Beginner Contest 232) D - Weak Takahashi

問題の要約 縦H行、横W行のH*Wマスからなるグリッドがある。上からi行目、左からj列目のマスを(i,j)と表す。 各マスの状態は文字Ci,jで表され、Ci,j=.ならばマス(i,j)は空きマスであり、Ci,j=#ならばマス(i,j)は壁である。 今、グリッド上を歩こうとしている…

M-SOLUTIONS プロコンオープン2021(AtCoder Beginner Contest 232) C - Graph Isomorphism

問題の要約 N個のボールにM本のひもを取り付けたおもちゃが2つある。 1つのおもちゃには、ボールに1,...,Nと番号が付けられており、i(1<=i<=M)本目のひもはボールAiとボールBiを結んでいる。 もう1つのおもちゃも同様に、ボールに1,...,Nと番号が付けられて…

M-SOLUTIONS プロコンオープン2021(AtCoder Beginner Contest 232) B - Caesar Cipher

問題の要約 英小文字からなる文字列Sを持っている。 文字列Sに対して、下記の操作をちょうど1回行う。 ・まず、非負整数Kを選ぶ。 ・その後、Sの各文字をK個後ろの英小文字に変更する。 ただし、 ・aの1個後ろの英小文字はbであり、 ・... ・zの1個後ろの英…

M-SOLUTIONS プロコンオープン2021(AtCoder Beginner Contest 232) A - QQ solver

問題の要約 3文字からなる文字列Sが与えられる。Sは、1以上9以下の整数a,bと文字xを、axbのように順につなげて得られる。 aとbの積を求めよ。制約 Sの長さは3 Sの1文字目および3文字目は1以上9以下の整数 Sの2文字目はx入力 S考え方 1,Sの1文字目と3文字目を…

パナソニックプログラミングコンテスト2021(AtCoder Beginner Contest 231) D - Neighbors

問題の要約 1からNの番号がついたN人を横一列に並べる方法のうち,以下の形式のM個の条件全てを満たすものが存在するか判定しろ。 ・条件:人Aiと人Biは隣り合っている制約 2<=N<=10^5 0<=M<=10^5 1<=Ai<Bi<=N (Ai,Bi)は相異なる入力 N M A1 B1 ... AM BM考え方 1,人の番号を1ずらす 1<=i<=N => 0<=i<=N-1 2,グラフで考える。 3,(Ai,Bi)が相異なること</bi<=n>…

パナソニックプログラミングコンテスト2021(AtCoder Beginner Contest 231) C - Counting 2

問題の要約 N人の生徒からなるクラスがあり,i(1<=i<=N)番目の生徒の身長はAi。 j=1,2,...,Qについて,以下の質問に答えよ。 ・N人のうち,身長がxj以上の生徒は何人か?制約 1<=N,Q<=2*10^5 1<=Ai<=10^9 1<=xj<=10^9入力 N Q A1 A2 ... AN x1 x2 ... xQ出力 Q行…