- Hydro
外站题,求助在线等,挺急的
- 2024-10-12 20:44:33 @
题目描述 小核桃有一个空序列A,但是他不太喜欢这个序列,因此他想通过一些操作改变序列A,接下来小核桃将依次进行N次操作,其中第i次操作分为以下两步:
1.将数字i加到序列A的尾部。
2.反转序列(即A[1],a[2],a[3]...A[i]变为 A[i]...A[3],A[2],A[1])。
小核桃想知道N次操作之后,序列A会变为什么样子,你能帮助他吗?
输入格式 一个整数N。
输出格式 一行N个整数, 表示N次操作后的序列A。
样例 输入数据 1 4 输出数据 1 4 2 1 3 输入数据 2 5 输出数据 2 5 3 1 2 4 样例1解释 每次操作后序列如下:
1
2 1
3 1 2
4 2 1 3
数据范围 对于30%的测试数据,N≤20。
对于60%的测试数据, N≤1000。
对于100%的测试数据,N≤100000。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a;
for (int i = 1; i <= n; ++i) {
a.push_back(i);
reverse(a.begin(), a.end());
}
for (int i = 0; i < n; ++i) {
cout << a[i] << (i == n - 1 ? '\n' : ' ');
}
return 0;
}
60pts TLE
8 条评论
-
hetao854137 @ 2024-10-15 10:55:21
核桃oj的题吗?为什么不在站内问
-
2024-10-12 20:52:23@
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int n,a[N*2],head,tail; int main(){ //freopen("xx.in","r",stdin); //freopen("xx.out","w",stdout); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; head=n,tail=n-1; for(int i=1;i<=n;i++){ if(i&1){ a[++tail]=i; }else{ a[--head]=i; } } for(int i=head;i<=tail;i++){ cout<<a[i]<<" "; } return 0; }
-
2024-10-12 20:50:09@
最后,从head到tail输出就可以了
-
2024-10-12 20:49:41@
数组开2n
-
2024-10-12 20:49:20@
正解不是这样的,但这样应该是对的:
一个数组,设head=n,tail=n-1,然后记录现在数组是正序还是倒序,如果是正序,那就在tail+1添加;否则,在head-1添加。
-
2024-10-12 20:47:15@
还有,这明显是思路问题吧
-
2024-10-12 20:46:48@
救救我!
-
2024-10-12 20:45:55@
去luogu问
- 1