[WEEK02] DAY12 & TMI


今日の午前中は体の調子が悪くて、薬を探して解決して、少し疲れました.
基礎文法を昼間まで練習する
そして夕食を食べる前にアルゴリズムの解き方を始めます.
今週の質問リストの始まりは이분 탐색です!

にぶんたんさく

n = int(input())
n_list = list(map(int, input().split(' ')))
n_list.sort()

m = int(input())
targets = list(map(int, input().split(' ')))

#두번째 줄 정렬 a.sort() -> 1 3 5 7 9 중간값 mid = sum //2로 구하고 왼쪽부터 있는지 비교

#왼쪽 lt = 0, 오른쪽 rt = n-1

#n번째 숫자가 첫번째 리스트 안에 존재하면 1 출력

while lt<=rt: #반 나눠서 점점 범위 좁혀오다가 lt가 남은rt 거리보다 커져버리면 함수 종결

  mid=(lt+rt)//2

  if a[mid]==m:      #a의 미드에 있는 값이 m이니?

  	print(mid+1)  #맞으면 mid출력~ 인덱스 값이니 +1 해줌

  	break

  elif a[mid]>m:

  	rt=mid-1  #큰쪽(오른쪽) 날림

  else:

  	lt=mid+1  #왼쪽을 중간보다 한 칸 더가서 범위 좁힘
次は思考過程を記録するメモです

白駿1920/2805


https://www.acmicpc.net/problem/1920
https://www.acmicpc.net/problem/2805


耳でもほどけます.

2805タイムアウト


2805は正しいコードですが、解答が得られ、タイムアウトが発生しました.
https://www.acmicpc.net/board/view/73644
https://stackoverflow.com/questions/11241523/why-does-python-code-run-faster-in-a-function
他のメンバーが探してきた2つの文章を参考にして、別途関数として提出して、結果は合格しました.
Pythonが関数をバイトコードにコンパイルしているからだそうです.

正しいがタイムアウトしたコードを表示

import sys
input=sys.stdin.readline

n, min_bring = map(int, input().split())
trees = list(map(int, input().split()))
trees.sort()

start = 0
end = max(trees)

while start <= end :
    mid = (start+end) // 2
    
    T_cut_sum = 0
    for tree in trees:
        if tree >= mid:
            T_cut_sum += tree-mid
    
    if T_cut_sum >= min_bring:
        start = mid + 1
    else:
        end = mid - 1
    
print(end)

関数としてのコード

import sys
input=sys.stdin.readline

n, min_bring = map(int, input().split())
trees = list(map(int, input().split()))
trees.sort()

# 가장 짧은 길이 1을 start로, 나무 중 가장 긴 길이를 end로 둔다.
start = 0
end = max(trees)
check = 0

def sumcut(mid):
    T_cut_sum = 0
    for tree in trees:
        if tree >= mid:
            T_cut_sum += tree-mid
    return T_cut_sum
            
while start <= end :
    mid = (start+end) // 2
    T_cut_sum = sumcut(mid)
    if T_cut_sum >= min_bring:
        start = mid + 1
        check = mid
    else:
        end = mid - 1
    
print(end)
最初のコードは
1)コードを記述できない場合
https://claude-u.tistory.com/446ここで1行の文章を読んでヒントを得ました
2)
この文章は再読すればよさそうだ
千差万別
2021.11.12金

今日の物語


体調が悪く、いろんな面で大変な1日でした
問題は健康状態ではなく、定期的に、、、、、、、
朝早くため息をつくところだった
いつもより疲れて全身が痛くて、薬を飲んでも仕方がない.
状态を言い訳にして休むという考えは绝対にありたくない、ははは、しかしやはり坚持しなければなりません
もともと疲れていたので、ホルモンの時は一層疲れてしまいました.
今日、アルゴリズムプールはアイデアからアイデアまで止まらず、アイデアはコードで実現され、想像していた時間が長くなく、これは大きな進歩です!!!
もし誰かがこの文章を読んでいたら、ほめてもらえますか.へへへ
明日は頭がもっと柔軟で、スピードがもっと高くて、コードがもっと上手に書くことを望んでいます.
今日も明日も頑張ります~
寝なさい!!!