codeforces 674回コメント
17846 ワード
codeforces 674回コメント
後期に参加する.
私はCode Forsdiv 3 674ラウンドに参加しました.
平日の午後5時に行われたのを覚えていますが、他の日程と重なっていて忙しいです.
あとA号から5回間違えました.
もともとない精神が崩れた.
試合が終わってから、ゆっくり問題を見てみましたが、思ったより簡単でした(だからdiv 3)
A番は試合時間に解け、B、C、Eは試合終了後に解けた.
これらの問題についてコメントします.
A. Floor Number
質問リンク:https://codeforces.com/contest/1426/problem/A
問題の説明
VasyaはPetyaの家に遊びに行きます
Petyaのマンション番号n(号の概念のようです)と各階に何個の数字からなる情報(x)は、Petya家が何階なのかを当てる問題です.
1階にはいつも2つの家があり、残りの各階にはxつの家があります.
に答える
nが1または2の場合、無条件に1階に戻ります.
他の値を入力した場合は、繰り返し文で床を見つけるのに役立ちます.import sys
input = sys.stdin.readline
t = int(input())
for i in range(t):
n,x = map(int,input().split())
floor = 1
if n == 1 or n == 2:
print(floor)
else:
floor= 2
while True:
limit = (floor-1)*x + 2
if limit >= n:
print(floor)
break
else:
floor+=1
私の解題は有効ではありません.
繰り返し文がなく、式で終わることができます.
では、時間の複雑さは減りますよね?
B. Symmetric Matrix
質問リンク:https://codeforces.com/contest/1426/problem/B
問題の説明
私はこれを理解したかどうか分かりませんが、私の理解方法で教えてあげます.
無制限2*2サイズのタイルがあり、n種類のタイプがあります
nが2なら
1 1
1 1
4 5
6 7
この2種類のタイルは無限です.
それらをつなぎ、回転せずにm*mコードにしたいです.
重ねてはいけません.すべてのタイルが使わなければならないわけではありません.
このようにつながっているとき、彼らは対称になることができますか?
ここでいう対称は以下の通りです.
左上から右下に線を引く場合は、上下対称にすればよい.
(上797と下797),(上88と下88)(上9と下9街)
に答える
mが奇数になると、22のタイルは絶対にmmサイズのタイルを作ることはできません.
この場合、必ずNOを出力します.
また、所定のタイルをすべて使用する条件はありません.
つまり、いいタイルがあれば、それだけでm*mサイズを作ることができます.
いいタイル自体が条件を満たす対称タイルです.
画板で作られているのでバランスが悪い.
私は上のようにabcdがあればaとdが基準線になり、bとcが同じかどうかを判断し、良いタイルを選別しました.
良いタイルがあれば、YESを出力していなければNOを出力import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
n,m = map(int,input().split())
check = False
for i in range(n):
a,b = map(int,input().split())
c,d = map(int,input().split())
if b == c:
check = True
if check and m % 2==0:
print("YES")
else:
print("NO")
C. Increase and Copy
質問リンク:https://codeforces.com/contest/1426/problem/C
問題の説明
配列a=[1]がある
1ラウンド(問題ではアクションと呼ぶ)で2つのアクションのいずれかを選択して実行できます.
import sys
input = sys.stdin.readline
t = int(input())
for i in range(t):
n,x = map(int,input().split())
floor = 1
if n == 1 or n == 2:
print(floor)
else:
floor= 2
while True:
limit = (floor-1)*x + 2
if limit >= n:
print(floor)
break
else:
floor+=1
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
n,m = map(int,input().split())
check = False
for i in range(n):
a,b = map(int,input().split())
c,d = map(int,input().split())
if b == c:
check = True
if check and m % 2==0:
print("YES")
else:
print("NO")
だから何をしたいのか、配列のすべての数字の和(a)がnより大きいように、最小限の回転を費やしたいと思っています.
これは最小回転数を出力する問題です.
に答える
配列に値を追加すると、レプリケーションは実行できません.
最小モーションでnより大きい値を得るには、まずアレイの値を最大限に増やします(1回の動作)
その後、コピーするとより大きな値が得られます(2回のアクション)
そうすれば、すぐに価格に達することができます.
私の場合、1番の動作をnの平方根に固定します.
2番目の動作では、nの平方根は(n−1)/nの平方根−1である.
そこで,以下の式で解く.
import sys
import math
input = sys.stdin.readline
t = int(input())
for _ in range(t):
n = int(input())
temp = int(math.sqrt(n))
print(temp+ ((n-1))//temp-1)
最初は違う式で解きましたが、この式はその式より簡単なので、Editorを参考にしました.E. Rock, Paper, Scissors
質問リンク:https://codeforces.com/contest/1426/problem/E
問題の説明
アリスとボブはじゃんけんをした.
じゃんけんのルールはみんなよく知っているはずなのでスキップしましょう
とりあえずn号じゃんけん
これはアリスとボブにハサミの石布を出す回数を与えます.
a 1はアリスの石、a 2はハサミ、a 3は布、b 1はご飯の石、b 2はハサミ、b 3は布
問題はアリスが勝つ回数が最も少なく、アリスが勝つ回数が最も多いことだ.
に答える
minではなくmaxを思い浮かべることができます
最大勝値:min(a 1,b 2)+min(a 2,b 3)+min(a 3,b 1)
アリスの岩はボブのハサミより優れている.
つまり、アリスが勝った状況を計算した.
敏感な問題です.
アリスは勝てない=負けじゃない.
アリスは勝てない=アリスは負けたか引き分けた
私はこれをまず表で解いてから手で解く行為を直接コードに書きましたか?
どのように形容すればいいか分かりませんが、maxとは違って、minを求めるときに相殺する必要がある仕事です.
相手のカードに勝てる人を早めに減らす仕事です.
アリスのはさみ-敏(アリスのはさみ、ご飯のはさみ+ご飯の石)
すべての相殺値を加算すると、最小値になります.
import sys
input = sys.stdin.readline
t = int(input())
alice = list(map(int,input().split()))
bob = list(map(int,input().split()))
maxwin = min(alice[0],bob[1]) + min(alice[1],bob[2])+min(alice[2],bob[0])
minlose = (alice[0]-min(alice[0],bob[0]+bob[2])) + (alice[1]-min(alice[1],bob[1]+bob[0])) + (alice[2]-min(alice[2],bob[2]+bob[1]))
print(minlose,maxwin)
n/a.結論
難しいと思い、問題も読まずに逃げてしまいました.
中秋節の連休はただ遊んでいるだけで、大丈夫です.
怖がる必要はない...英語だからか、もっと怖かった.
あるいは時間制限がないのでゆったりしているので大丈夫…?
これはどちらも接触を続けなければ修復できない欠点です.
Reference
この問題について(codeforces 674回コメント), 我々は、より多くの情報をここで見つけました https://velog.io/@moongomi/codeforces674テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol