結果
問題 | No.5020 Averaging |
ユーザー | uuuus17 |
提出日時 | 2024-02-25 15:20:01 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 888 ms / 1,000 ms |
コード長 | 4,921 bytes |
コンパイル時間 | 153 ms |
コンパイル使用メモリ | 81,700 KB |
実行使用メモリ | 298,832 KB |
スコア | 22,375,589 |
最終ジャッジ日時 | 2024-02-25 15:21:14 |
合計ジャッジ時間 | 46,316 ms |
ジャッジサーバーID (参考情報) |
judge13 / judge14 |
純コード判定しない問題か言語 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 864 ms
288,344 KB |
testcase_01 | AC | 866 ms
279,644 KB |
testcase_02 | AC | 874 ms
298,832 KB |
testcase_03 | AC | 864 ms
283,480 KB |
testcase_04 | AC | 865 ms
282,060 KB |
testcase_05 | AC | 874 ms
297,944 KB |
testcase_06 | AC | 865 ms
289,104 KB |
testcase_07 | AC | 863 ms
294,616 KB |
testcase_08 | AC | 873 ms
283,352 KB |
testcase_09 | AC | 864 ms
286,552 KB |
testcase_10 | AC | 865 ms
290,264 KB |
testcase_11 | AC | 862 ms
290,136 KB |
testcase_12 | AC | 868 ms
294,744 KB |
testcase_13 | AC | 864 ms
278,744 KB |
testcase_14 | AC | 865 ms
291,288 KB |
testcase_15 | AC | 864 ms
293,336 KB |
testcase_16 | AC | 870 ms
292,040 KB |
testcase_17 | AC | 865 ms
286,128 KB |
testcase_18 | AC | 871 ms
285,912 KB |
testcase_19 | AC | 865 ms
288,088 KB |
testcase_20 | AC | 872 ms
284,632 KB |
testcase_21 | AC | 866 ms
289,476 KB |
testcase_22 | AC | 863 ms
288,856 KB |
testcase_23 | AC | 877 ms
298,704 KB |
testcase_24 | AC | 866 ms
290,196 KB |
testcase_25 | AC | 867 ms
284,504 KB |
testcase_26 | AC | 864 ms
292,312 KB |
testcase_27 | AC | 865 ms
286,404 KB |
testcase_28 | AC | 866 ms
279,640 KB |
testcase_29 | AC | 872 ms
291,296 KB |
testcase_30 | AC | 880 ms
278,340 KB |
testcase_31 | AC | 870 ms
277,080 KB |
testcase_32 | AC | 888 ms
294,104 KB |
testcase_33 | AC | 869 ms
280,408 KB |
testcase_34 | AC | 866 ms
295,012 KB |
testcase_35 | AC | 870 ms
276,708 KB |
testcase_36 | AC | 866 ms
276,024 KB |
testcase_37 | AC | 871 ms
293,592 KB |
testcase_38 | AC | 864 ms
286,680 KB |
testcase_39 | AC | 869 ms
296,024 KB |
testcase_40 | AC | 865 ms
288,984 KB |
testcase_41 | AC | 870 ms
297,304 KB |
testcase_42 | AC | 871 ms
289,336 KB |
testcase_43 | AC | 871 ms
295,448 KB |
testcase_44 | AC | 866 ms
283,992 KB |
testcase_45 | AC | 866 ms
290,940 KB |
testcase_46 | AC | 870 ms
291,416 KB |
testcase_47 | AC | 880 ms
278,104 KB |
testcase_48 | AC | 867 ms
289,540 KB |
testcase_49 | AC | 866 ms
287,960 KB |
ソースコード
import sys input = lambda: sys.stdin.readline().rstrip() # sys.setrecursionlimit(10**7) # sys.set_int_max_str_digits(10**6) # import pypyjit # pypyjit.set_param('max_unroll_recursion=-1') def mp():return map(int,input().split()) def lmp():return list(map(int,input().split())) def lm1(LIST): return list(map(lambda x:x-1, LIST)) def mps(A):return [tuple(map(int, input().split())) for _ in range(A)] def stoi(LIST):return list(map(int,LIST)) def itos(LIST):return list(map(str,LIST)) def atoi(LIST): return [ord(i)-ord("a") for i in LIST] def Atoi(LIST): return [ord(i)-ord("A") for i in LIST] def LT(LIST,N): return LIST[bisect.bisect_left(LIST,N)-1] def LE(LIST,N): return LIST[bisect.bisect_right(LIST,N)-1] def GT(LIST,N): return LIST[bisect.bisect_right(LIST,N)] def GE(LIST,N): return LIST[bisect.bisect_left(LIST,N)] def bitA(X,A):return X & 1<<A == 1<<A def gtoi(x,y,h,w):return x*w+y import math import bisect import heapq import time import random as rd import itertools from copy import copy as cc from copy import deepcopy as dc from itertools import accumulate, product from collections import Counter, defaultdict, deque def ceil(U,V):return (U+V-1)//V def modf1(N,MOD):return (N-1)%MOD+1 def printmat(list): for i in list:print(*i) m4 = [[1,0],[0,1],[-1,0],[0,-1]] m8 = [[-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1]] inf = (1<<63)-1 mod = 998244353 start_time = time.time() n = int(input()) omote = [] ura = [] max_limit = 50 for i in range(n): a,b = mp() omote.append(a) ura.append(b) width = 5 depth = 3 def output(sosa_arr): print(len(sosa_arr)) for i,j in sosa_arr:print(i+1,j+1) def calc_score(x,y): return max(abs(500000000000000000-x),abs(500000000000000000-y)) def calc_all_score(a,b,X): ErrorA = abs(500000000000000000 - a[0]) ErrorB = abs(500000000000000000 - b[0]) Score = (int)(2000000.0 - 100000.0 * math.log10(1.0 * max(ErrorA, ErrorB) + 1.0)) if ErrorA == 0 and ErrorB == 0: Score = 2000050 - X return Score def greedy(a,b): sosa = [] for kaisu in range(max_limit): score = calc_score(a[0],b[0]) choose_card = 0 for i in range(1,n): na,nb = (a[0]+a[i])/2, (b[0]+b[i])/2 now_score = calc_score(na,nb) if now_score < score: score = now_score choose_card = i a[0],b[0],a[choose_card],b[choose_card] = (a[0]+a[choose_card])/2, (b[0]+b[choose_card])/2,\ (a[0]+a[choose_card])/2, (b[0]+b[choose_card])/2 if choose_card == 0:break sosa.append([0,choose_card]) return a,b,sosa def remove_huyou(A): while len(A) != 1: if A[-1] == A[-2]:A.pop() else:break return A def hanei_0(Score,A,B,Sosa): choose_card = 0 Score = calc_score(A[0],B[0]) for i in range(1, n): na, nb = (A[0] + A[i]) / 2, (B[0] + B[i]) / 2 now_score = calc_score(na, nb) if now_score < Score: Score = now_score choose_card = i A[0], B[0], A[choose_card], B[choose_card] = (A[0] + A[choose_card]) / 2, (B[0] + B[choose_card]) / 2, \ (A[0] + A[choose_card]) / 2, (B[0] + B[choose_card]) / 2 if choose_card != 0:Sosa.append([0, choose_card]) return [Score,A,B,Sosa] def beam_search(a,b,sosa_Arr): koho = [[calc_score(a[0],b[0]), cc(a), cc(b), sosa_Arr]] # 次stepで反映したときのscore,今のa,今のb,今の操作 for dep in range(depth): heapq.heapify(koho) now_koho = [] while not (len(koho) == 0 or len(now_koho) == width): now_koho.append(heapq.heappop(koho)) koho.clear() for Score,A,B,Sosa in now_koho: if len(Sosa) == max_limit: koho.append([Score, A, B, Sosa]) continue for i in range(n): for j in range(i+1,n): ac = cc(A) bc = cc(B) sosac = cc(Sosa) na,nb = (a[i]+a[j])/2, (b[i]+b[j])/2 ac[i],ac[j],bc[i],bc[j] = na,na,nb,nb hanei_a,hanei_b = (na+ac[0])/2, (nb+bc[0])/2 now_score = calc_score(hanei_a,hanei_b) sosac.append([i,j]) koho.append([now_score,ac,bc,sosac]) heapq.heapify(koho) best_koho = heapq.heappop(koho) best_koho[3] = remove_huyou(best_koho[3]) best_koho = hanei_0(*best_koho) return best_koho def main(): sosa_arr = [] global omote global ura while time.time()-start_time <= 0.8: pred_score,na,nb,sosa_arr = beam_search(omote,ura,sosa_arr) omote = na ura = nb #print(pred_score,omote,ura,sosa_arr) output(sosa_arr) #print(calc_all_score(omote,ura,len(sosa_arr))) #na,nb,sosa_arr = greedy(omote,ura) main()