Diverse Permutation(구성)
2452 단어 div
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Permutation p is an ordered set of integers p1, p2, ..., pn, consisting of n distinct positive integers not larger than n. We'll denote as n the length of permutation p1, p2, ..., pn.
Your task is to find such permutation p of length n, that the group of numbers |p1 - p2|, |p2 - p3|, ..., |pn - 1 - pn| has exactly k distinct elements.
Input
The single line of the input contains two space-separated positive integers n, k (1 ≤ k < n ≤ 105).
Output
Print n integers forming the permutation. If there are multiple answers, print any of them.
Sample test(s)
input
3 2
output
1 3 2
input
3 1
output
1 2 3
input
5 2
output
1 3 2 4 5
Note
By |x| we denote the absolute value of number x.
제목:
1~N의 수열을 나타내는 N과 K를 제시하고 어떻게 정렬하느냐고 묻는다. 둘 사이의 차이값의 절대값의 차이수를 K로 만들 수 있는 종수는 K이다.만족하는 서열을 임의로 출력하면 된다.
아이디어:
수열을 구성하다.수열을 쓰면 한 수열의 최대 두 두 개의 차이 값도 n-1개에 불과하다는 것을 알 수 있다. 이 수열은 첫 번째 +(n-1)=두 번째 항, 두 번째 항-(n-2)=세 번째 항을 통해 구성될 수 있다.
이럴 줄 알았으면 수열을 만들기 쉬웠을 텐데, 제목에 따라 몇 개의 K가 나와야 하는지, 이 수열의 앞의 K항이 나타나고 나머지는 점차 늘어나거나 줄어들면 된다.
AC:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int num[100005];
int main() {
int n, k;
scanf("%d%d", &n, &k);
int temp = 1, from = n - 1;
num[1] = 1;
for (int i = 2; i <= n; ++i) {
int res = temp * from;
num[i] = num[i - 1] + res;
--from;
temp *= -1;
}
for (int i = 1; i <= k; ++i) {
printf("%d ", num[i]);
}
int ans = num[k];
if (k % 2) {
for (int i = k + 1; i <= n; ++i)
printf("%d ", ++ans);
} else {
for (int i = k + 1; i <= n; ++i)
printf("%d ", --ans);
}
printf("
");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
🧙🏼 HTML 구조를 나타내는 요소: 컨텐츠 분할 요소 : 블록 레벨 요소 : 플로우 콘텐츠를 위한 통용 컨테이너 (순수 컨테이너로서 아무것도 표현안함) : 인라인 컨테이너 : 인라인 레벨 요소 🌵 span (인라인 요소) vs div(블록 요소) ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.