hdoj 1276 병사 대열 훈련 문제 시 뮬 레이 션 대열
4287 단어 #ACM 데이터 구조
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11754 Accepted Submission(s): 5158
Problem Description
모 부 대 는 신병 대열 훈련 을 실시 하여 신병 을 처음부터 순서대로 번 호 를 매 겨 횡대 로 나란히 세 웠 다. 훈련의 규칙 은 다음 과 같다. 처음부터 1 부터 2 까지 번호, 2 까지 번호, 나머지 는 작은 번호 방향 으로 접근 한 다음 에 처음부터 1 부터 3 까지 번호, 3 까지 번호, 나머지 는 작은 번호 방향 으로 접근 했다.계속 처음부터 1 부터 2 까지 번호...이후 처음부터 1 ∼ 2 번, 1 ∼ 3 번 을 돌아 가면 서 나머지 인원 이 3 명 을 넘 지 않 을 때 까지 진행한다.
Input
이 문 제 는 여러 테스트 데이터 팀 이 있 으 며, 첫 번 째 행동 팀 은 N 행 신병 수 이 고, 이 어 N 행 신병 수 이 며, 신병 수 는 5000 을 넘 지 않 는 다.
Output
입력 한 신병 수 에 대응 하 는 N 줄 이 있 고, 줄 마다 남 은 신병 의 최초 번 호 를 출력 하 며, 번호 사이 에 빈 칸 이 있 습 니 다.
Sample Input
22040
Sample Output
1 7 191 19 37
Author
Cai Minglun
Source
杭电ACM集训队训练赛(VI)
刚开始用的是下边的代码,超时了,贴过来是因为想借这道题说一说时间复杂度的事,因为在刚开始的代码中尽管数组中元素为0无效,但是最终还是对0进行判断了,所以按照最坏的情况来说基本上是每个数都判断了,但是队列的话每次都能除去一般元素,操作的元素就少了很多
#include
#include
using namespace std;
int main(){
int T,N;
scanf("%d",&T);
while(T--){
queueq;
scanf("%d",&N);
for(int i=1;i<=N;i++)
q.push(i);
while(q.size()>3){
int i=1;
q.push(1);
q.pop();
while(q.front()!=1){
i++;// ,
if(i%2==0){
q.pop();
}
else{
q.push(q.front());
q.pop();
}
}
if(q.size()<=3)
break;// ,
i=1;
q.push(1);
q.pop();
while(q.front()!=1){
i++;
if(i%3==0){
q.pop();
}
else{
q.push(q.front());
q.pop();
}
}
}
printf("%d",q.front());
q.pop();
while(!q.empty()){
printf(" %d",q.front());
q.pop();
}
printf("
");
}
return 0;
}
,
#include
int main(){
int a[5010];
int T,N;
int flag=1;
scanf("%d",&T);
while(T--){
scanf("%d",&N);
for(int i=1;i<=N;i++){
a[i]=i;
}
int num=N;
while(num>3){
if(flag%2==1){
for(int i=1;i<=N;i++){
if(a[i]%2==0&&a[i]!=0){
a[i]=0;
num--;
}
}
int k=1;
for(int i=1;i<=N;i++){
if(a[i]!=0)
a[i]=k++;
}
}
else{
for(int i=1;i<=N;i++){
if(a[i]%3==0&&a[i]!=0){
a[i]=0;
num--;
}
}
int k=1;
for(int i=1;i<=N;i++){
if(a[i]!=0)
a[i]=k++;
}
}
flag++;
}
int t=1;
for(int i=1;i<=N;i++){
if(a[i]!=0){
if(t==num)
printf("%d
",i);
else{
printf("%d ",i);
t++;
}
}
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.