Codeforces 665 解题报告
Codeforces 665
-----
CF665A
リンク
CF665Aの問題文
A市とB市はバスで結ばれており、最初の運行は朝5:00から、最終便は夜11:59までです。
A市から出るバスはa分ごとに発車し、B市への所要時間はta分です。B市から出るバスはb分ごとに発車し、A市への所要時間はtb分です。
運転手Simonは仕事に飽きて、運行途中に見かけたバスの数を数えました。ただし、出発地と到着地での ...
10月13日 09:37 投稿
Educational Codeforces Round 181 (Div. 2) の A〜D 問題の解法
問題リンク: https://codeforces.com/contest/2125
A. Difficult Contest
解法
「NTT」と「FFT」はどちらも部分列として T が後ろに来る必要がある。したがって、まず F と N 以外の文字をすべて出力し、その後で F と N を出力すればよい。
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
...
10月5日 11:00 投稿
配列と集合の問題解説: Codeforces Round 932 (Div. 2)
C. メッセンジャープログラム
2つの配列aとb、および整数Lが与えられます。aとbのインデックスのシーケンスpを見つけて、\(\sum a_{p_i} + \sum |b_{p_i}-b_{p_{i+1}}| \leq L\)を満たす必要があります。
解法
キー1:bを昇順にソートすることが最適です。
キー2:固定された\(b_l\)と\(b_r\)に対して、\(\sum^r_l |b_{p_i}-b_{p_{i+1}}| = b_r - b_l\)となり、これは固定 ...
9月28日 13:57 投稿
2024年夏休み交流戦・練習編1
2024年夏休み交流戦・練習編1
A - 🐓
AtCoder - abc079_d
問題文
各頂点のコストが与えられ、それを1に変換するのに必要な最小コストを求める。
解法
すべての数を1にするには、直接1に変換するか、別の数に変換してからさらに変換する方法がある。
これは$floyd$アルゴリズムによる最短経路探索と似ているため、$floyd$を適用できる。
コード
#include<bits/stdc++.h&g ...
8月5日 02:59 投稿
Codeforces Round 1051 (Div. 2) A~D2問題の解説
A. 全ての長さの減算
思考問題。
長さが \(k(k \in [1,n])\) の区間を選び1を引く操作を繰り返す場合、まず\(a_i = n\) の位置を特定します。次に、\(n\) が存在する区間を維持し、\(n-k+1\) がその両側に存在するか確認し、存在すれば区間を拡張します。存在しない場合は操作は不可能です。
コードを表示```
#include <bits/stdc++.h>
using namespace std;
using i ...
8月1日 18:57 投稿
Codeforces Round #671 (Div. 2) 主要問題のアルゴリズム解法と実装
A - Digit Game
正整数 $n$ が与えられたとき、先手は奇数インデックスの位置、後手は偶数インデックスの位置を交互に消去していく。最後に残った数字の奇偶性によって勝者が決定する。二人が最適に行動する場合の勝者を判定する。
最後に残る位置は $n$ の偶奇によって一意に定まる。$n$ が奇数の場合は先手が制御する位置(0-indexed で偶数インデックス)、$n$ が偶数の ...
7月19日 20:58 投稿
Codeforces Round 1027 (Div. 3) 問題解説(A〜E)
概要
本稿では、Codeforces Round 1027(Div. 3)の問題AからEまでの解法を示す。
問題A:数値構築
問題内容
4桁の整数cが与えられる。整数a(0以上99以下)とb(0以上99以下)を用いて、(a+b)² = c を成立させられるか判定する。
解法
0から√nまでの範囲で遍历し、平方数になるかを判定すればよい。a+b = √c が成立する必要があり、a=0, b=√c で試すだけで十分である ...
7月19日 20:01 投稿
Codeforces Round 1020 (Div. 3) 解説
A. Dr. TC
Dr. TC は患者の知能をテストするために、以下のような問題を設計しました。
長さが \(n\) の二進数文字列 \(s\) を作成します。
この文字列 \(s\) を元に、\(n\) 個の二進数文字列 \(a_1, a_2, \dots, a_n\) を生成します。具体的には、\(a_i\) は \(s\) の第 \(i\) 文字を反転(1 なら 0 に、0 なら 1 に)したものです。
これらの文字列を \(n \times n\) ...
7月7日 22:51 投稿
Codeforces Edu Contest 161 解法と分析
問題A: 文字列照合判定
この問題では、文字列cの各文字が対応する位置の文字列aまたは文字列bのいずれかと一致するかを判定する必要があります。すべての文字が一致する場合は"NO"、そうでない場合は"YES"を出力します。
#include
#include
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int test_cases ...
7月7日 20:03 投稿
Codeforces Round 999 合併部門における競技プログラミング問題の解説
A - 数列の並べ替えとスコア最適化
長さ n の整数列 a が与えられる。初期値が 0 の変数 s に対して、a の要素を順に加算する。s が偶数になった場合、ポイントを 1 加算した上で s を 2 で割った余り(つまり s % 2)に更新する。この操作を繰り返す中で、得られるポイントの合計を最大化するために、a の要素をどのように並び替えるべきか。
重要な観察として、奇数の個 ...
6月22日 18:23 投稿