보위 안 (경 동 2017 가을 모집 진제)
3049 단어 알고리즘
, , B 。 , n , , B , 。
외적 침입 사건 이 발생 하면 산꼭대기 의 보 초 는 봉화 에 불 을 붙인다.만약 두 초소 가 있 는 산봉우리 사이 에 더 높 은 산봉우리 가 가 려 지지 않 고 둘 사이 에 연결 통로 가 있다 면 초 소 는 다른 산봉우리 의 봉화 연기 가 점화 되 었 는 지 관찰 할 수 있다.작은 산 이 고리 위 에 있 기 때문에 임의의 두 작은 산 사이 에 두 개의 서로 다른 연결 통로 가 존재 한다.위 와 같은 가 려 지지 않 는 조건 에서 한 산봉우리 위의 초소 에 불 을 붙 인 봉 연 은 적어도 한 통 로 를 통 해 다른 한 끝 에서 관찰 할 수 있다.임의의 인접 초소 에 대해 서 는 한쪽 초소 에서 불 이 붙 은 봉 연 기 를 발견 할 수 있 을 것 이다.소 B 가 설계 한 이런 보위 방안 의 중요 한 특징 중 하 나 는 상대방 의 봉화 초소 의 수량 을 관측 할 수 있다 는 것 이다. 그녀 는 네가 그녀 를 도와 이 문 제 를 해결 할 수 있 기 를 바란다.
입력
입력 중 여러 그룹의 테스트 데이터 가 있 습 니 다.각 조 테스트 데이터 의 첫 번 째 행 위 는 하나의 정수 n (3 < = n < = 10 ^ 6) 으로 수도 주변의 작은 산 수량 이 고 두 번 째 행 위 는 n 개의 정수 로 작은 산 의 높이 h 를 순서대로 나타 낸다. (1 < = h < = 10 ^ 9).
출력
각 조 의 테스트 데 이 터 를 단독 줄 에서 서로 관찰 할 수 있 는 초소 의 대 수 를 출력 합 니 다.
샘플 입력
5 1 2 4 5 3
샘플 출력
7
나의 해답
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
*
* @author
* @email [email protected]
* @describe
* @date 2018 9 9
*
*/
public class BaoWeiFangAn
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext())
{
int n = scanner.nextInt();
Map record = new HashMap<>();
int[] mouns = new int[n];
int result = 0;
for(int i = 0 ; i= l)
{
str=j+""+(j+i-l+1);
}
else
{
str= (j+i+1)+""+j;
}
if(record.get(str) != null)continue;
int sign = 0; //
//
for(int k=i;k>0;k--)
{
if(mouns[j] >= getCenterMountain(mouns, j ,k) && getMountain(mouns,j,i) >= getCenterMountain(mouns, j ,k))
{
sign = 1;
}
else
{
sign = 0;
k=0;
}
}
if(sign==1)
{
int le = mouns.length;
if(j+i+1 >= le)
{
record.put(j+""+(j+i-l+1), "1");
System.out.println(" L"+j+""+(j+i-l+1));
}
else
{
record.put((j+i+1)+""+j, "1");
System.out.println(" L"+(j+i+1)+""+j);
}
result++;
}
System.out.println(" "+j+" , "+sign);
}
}
System.out.println(result+n);
}
}
// , ,
//
public static int getMountain(int[] m, int np, int jj)
{
int length = m.length;
if(np+jj+1 >= length)
{
return m[np+jj-length+1];
}
else
{
return m[np+jj+1];
}
}
//
public static int getCenterMountain(int[] m, int np, int jj)
{
int length = m.length;
if(np+jj >= length)
{
return m[np+jj-length];
}
else
{
return m[np+jj];
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.