hdoj 1257 최소 차단 시스템 [간단 한 문제]

2547 단어 hdoj
최소 차단 시스템
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 27194    Accepted Submission(s): 10726
Problem Description
한 나 라 는 적국 의 미사일 공격 을 방어 하기 위해 미사일 요격 시스템 을 발전 시 켰 다. 그러나 이 미사일 요격 시스템 은 첫 번 째 포탄 이 임의의 높이 에 도달 할 수 있 지만 이후 에는 모든 포탄 이 앞의 높이 를 초과 할 수 없다 는 결함 이 있다. 어느 날 레 다 는 적국 의 미사일 습격 을 포착 했다. 이 시스템 은 아직 시험 단계 이기 때문에 시스템 이 하나 밖 에 없다.그래서 모든 미사일 을 차단 하지 못 할 수도 있다.
어 떡 하지?시스템 을 몇 세트 더 만 들 지!말 하기는 쉬 운 데, 원 가 는?비용 은 큰 문제 입 니 다. 그래서 저 는 이곳 에 와 서 구 조 를 구 했 습 니 다. 최소한 몇 개의 차단 시스템 이 필요 한 지 계산 해 주세요.
 
Input
몇 개의 데 이 터 를 입력 하 십시오. 각 조 의 데 이 터 는 미사일 총 개수 (정수), 미사일 이 이에 따라 날 아 오 는 높이 (레이더 가 제시 한 높이 데 이 터 는 30000 이상 의 정수 가 아니 라 빈 칸 으로 구분) 를 포함 합 니 다.
 
Output
각 조 의 데이터 출력 에 대응 하여 모든 미사일 을 차단 하려 면 적어도 몇 세트 의 이런 미사일 차단 시스템 을 갖 추어 야 합 니까?
 
Sample Input
 
   
8 389 207 155 300 299 170 158 65
 

Sample Output
 
   
2
 

Source
浙江工业大学第四届大学生程序设计竞赛
 
思路:
 
         就是用导弹的高度来决定拦截系统的高度,然后每次都更新所有的已经存在的拦截系统的高度,如果没有大于等于导弹的高度的拦截系统,就只能添加一个拦截系统,然后继续遍历,直到遍历完为止!(记住从第一个导弹就开始遍历,而不能一直更新新添加的那个拦截系统的高度值,不满足的话才遍历。而应该直接遍历所有的!这样的话,你是找大于等于该拦截系统的值,进行更新的!)
 
代码:
 
#include 
#include 
int a;//          
int b[100000];//                
int main()
{
	int n,cnt;//n          ,cnt          
	while(scanf("%d",&n)!=EOF)
	{
		memset(b,0,sizeof(b));//b                  
		cnt=0;
		for(int i=0;i=a)//              
				{
					b[j]=a;
					break;
				}
			}
			if(j>cnt)//            ,                
			{
				b[++cnt]=a;//         ,     ,  b              
			}
		}
		printf("%d
",cnt); } return 0; }

좋은 웹페이지 즐겨찾기