이 실제 도로 어려운 항목 컴퓨터가 삼일이 켜지지 돌았 다 뇌에서, 조정을 만지지 수 있기 때문에 title're 정말 문제는, 내 죽음 ™! !
생각 : 폭력 아날로그 (시간 복잡도 O (NM)로 딥 등) + 최적화 모듈 (기초가되는 모든 단순히 폭력적 TLE 될 수도 있음)한다.
AC 코드 :
#INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; 긴 길이 N, m, t, A [ 10005 ] [ 105 ], 수 [ 10005 ], 시작, ANS, P; 부울 기호 [ 10005 ] [ 105 ]; int로 주 () { (scanf와 " %의 LLD의 %의 LLD를 " , N, m); 위한 ( 긴 길이 I = 1 ; I ++는, 난 <= N ) 에 대해 ( 긴 길이 , J = 0 , J ++; J <m ) { (는 scanf" %의 LLD의 %의 LLD " , t, & A [I] [J]); [I] [j]가 로그인 = t; 경우 (부호 [I] [J]) 수 [I] ++ ; } 는 scanf ( " %의 LLD " , 시작); 긴 긴 J = 시작; 위한 ( 긴 길이 I = 1 ; i가 <= N; 내가 ++ ) { ANS + = A [i]를 [START]; P가 A [i]를 [시작] % = 수를 [I]; 경우 (p의 == 0 ) p = 수 [I]; 동안 (1 ) { 경우 (부호 [I] [J]) p-- ; 만약 (! P가) 휴식 ; J ++ ; 만약 (j의 ==의 m) J = 0 ; } 시작 = J 단계; } ANS = ANS % 20123 ; 의 printf ( " %의 LLD " , ANS); 반환 0 ; }
코어 최적화 :
p는 수 A [i]를 [시작]을 % = [I];
시작 방 번호의 층의 시작점을 나타내고, 에이블 []는 구문 최적화 방 레이어 번호는 예를 들면 개조 연산자 크게 시간 복잡도를 감소시킬 수 계단이다 :
이 계단과 방 3 층이 있지만, 실내의 액자 시작 X = 10000, 시뮬레이션 폭력은 10,000을해야하지만 10,000% 3 = 1, 그것은 1 개 거리에 있습니다.
사실, 최적화는 점없는
열쇠는 시뮬레이션주기를 조정하는 것입니다!
그동안 ( 1. ) { IF (부호 [I] [J])에 P--는; // 방 계단이 있는지 여부를 기록하는 [] []는 불리언 타입 로그인 IF (P!) BREAK , J ++ ; IF (J = m =)는 J = 0 ; // 아날로그 환형 통로 }
오래 오래 열 것을 잊지 마세요
(가) 20,123%에 대한 답변을 참조하지 않았기 때문에 AC 코드는 첫 번째 제출 20 분이 소요됩니다