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

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

2022-01-01から1年間の記事一覧

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を代入して答えを出力。実際のプログラム#…