[NOIP 시뮬레이션 테스트] 마시는 음료 (아날로그)

제목 설명

올리비에와 눈 라자드 마시는.
두 사람도 $ $ 18 병을 마시고, 올리비에는 마침내 떨어졌다.
올리비에 너무 많이 생산 부작용을 가지고 있기 때문에, 약물 연구 깨어있는 교회를 복용 후, 다음 날 잠을 잘 수 있습니다.
그는 계산의 지루한 방법과 시간을 보냈다하지만 그는 왕자 모든 후, 양을 계산하지 않습니다. 그는이 문제 패싯을 해결 계산합니다 :
그는 제 1 길이의 $ n 개의 $ 배열은 $을 $ 썼다. $ \들의 어레이를 계산 {a_x, a_y \} $이 나쁜 쌍 불리는 경우에만, $ X <Y $으로하고 a_x $ \ 개조 a_y K = $으로 . 그래서 연속 하위 배열은 나쁜 포함하지 않는 얼마나 많은?


입력 형식

선은 두 개의 정수, $ n 개의 $ 및 $ K $가 포함되어 있습니다.
둘째 줄은 $ $ N- 정수를 포함하는 배열은 $ 달러이다.


출력 형식

출력 행은 대답이 포함되어 있습니다.


견본

샘플 입력 :

3 2
5 3 1

샘플 출력 :

4


데이터 범위 및 팁

샘플 설명 :

$ \는 {5,3 \} $ 배열 만 나쁜 쌍이다.

데이터 범위 :

$ 20 \ % $으로 데이터에 대한 $ 1 \ leqslant n 개의 \의 leqslant 100 $.
또 다른 $ (30) \ %의 $ 데이터를 들면, $ K는 = 0 $.
$ 100 \ % $으로 데이터에 대한 $ 1 \ n 개의 leqslant \의 leqslant {10} ^ 5,0 \ leqslant K \ leqslant {10} ^ 5,1 \ leqslant A_I \ leqslant {10} ^ 5 $


문제 해결

그것은 왼쪽 지점, 바로 자신의 합법적 인 간격이 연속 세그먼트를해야 지적하지만 간헐적 수 없다는 것을 발견했다.

그래서 우리는 합법적 인 범위를 보호하기 위해 고려한다.

a_x $ \ 개조 a_y K = $ 即为 $ (a_x-K) \ 개조 a_y = $ 0.

그럼 우리가 할 수있는 품질 요소의 $ a_x-K $ 분해 될 수 있습니다.

시간 복잡도 : $ \ 시타 (N) $.

기대 점수 : $ $ 100 점을.

실제 점수 : $ $ 100 점.


코드 시간

#INCLUDE <비트 / stdc ++ H.> 
네임 스페이스를 사용하여 표준; 
긴 길이 N, K, ANS; 
긴 긴 [100001]; 
긴 긴 CNT [100001]; 
INT의 main () 
{ 
	memset 함수 (CNT, 0x3F입니다,는 sizeof (CNT)); 
	scanf와 ( "%의 LLD의 %의 LLD", N, K); 
	경우 ( "%의 LLD"을, A [I])를 scanf와 (INT I = 1; i가 ++; 나는 <= N); 
	긴 긴 LFT = N, RHT = N + 1; 
	대해 INT (I = N, I는, 난 -) 
	{ 
		경우 (a [I] == K) RHT = 분 (LFT, RHT); 
		다른 
			대 (INT의 J = 1; j 개의 * j를 <= A [i]를 -K, J ++) 
			{ 
				((a [i]를 -K) %의 J)를 계속하는 경우; 
				만약 (j> K) RHT = 분 (CNT [J], RHT); 
				경우 ((a [i]를 -K) / J> K) RHT = 분 (CNT [(a [i]를 -K) / J], RHT); 
			} 
		경우 (a [I]> K) LFT = 난; 
		CNT [A [I] = 1; 
		ANS + = RHT-I;
	}
	0을 반환; 
}

RP의 ++

추천

출처www.cnblogs.com/wzc521/p/11479569.html