1 条题解
-
0
自动搬运
来自洛谷,原作者为

叫我DJ
这个家伙很勤快,但还是什么也没有留下搬运于
2025-08-24 22:11:00,当前版本为作者最后更新于2019-07-14 19:17:27,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
新鲜的题!!!
先用链表存储每一个编号的数前一个和后一个数的编号,最后由大到小枚举一遍,将没有用过的点连上后一个一起输出(注意它能输出,当且仅当它后面有数)
输出以后记得把它前一个数和它后面的后面的数连上
然后,就可以上代码了
#include <cstdio> int n,a[100001],k[100001],x[100001],i; int main() { scanf("%d",&n); for(i=1;i<=n;++i){ scanf("%d",&a[i]); k[a[i-1]]=a[i]; x[a[i]]=a[i-1];} for(i=n;i>=1;--i) if(k[i])printf("%d %d ",i,k[i]),k[x[i]]=k[k[i]],x[k[x[i]]]=x[i],k[k[i]]=0; return 0; }
- 1
信息
- ID
- 4431
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 4
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者