NOIP2018初赛普及组完善程序题第2题(4.2) 第 23 题

对于一个 1 到 n 的排列 P

(即 1 到 n 中每一个数在 P 中出现了恰好一次),

令 q[i] 为第 i 个位置之后第一个比 P[i] 值更大的位置,

如果不存在这样的位置,则 q[i] = n + 1。

举例来说,如果 n = 5 且 P 为 1 5 4 2 3 ,则 q 为2 6 6 5 6。

下列程序读入了排列 P ,使用双向链表求解了答案。试补全程序。



#include <iostream>
using namespace std;

const int N = 100010;
int n;
int L[N], R[N], a[N];

int main() 
{
    cin >> n;
    for (int i = 1; i <= n; ++i) 
	{
        int x;
        cin >> x;
        a[x]=i;//① ;
        cout<<"a["<<x<<"]="<<a[x]<<" ";
    }
    cout<<endl;
    
    for (int i = 1; i <= n; ++i) 
	{
        R[i] = i+1;//② ;
        L[i] = i - 1;
        cout<<"L["<<i<<"]="<<L[i]<<" ";
    }
    cout<<endl;
    
    for (int i = 1; i <= n; ++i) 
	{
    
        cout<<"R["<<i<<"]="<<R[i]<<" ";
    }
    cout<<endl;
    cout<<"-------------------"<<endl;
    
    for (int i = 1; i <= n; ++i) {
        
        cout<<"a["<<i<<"]="<<a[i]<<" ";
    }
    cout<<endl;
    
	
	
	//由a[1]到a[n]从小到大删除 
	for (int i = 1; i <= n; ++i) 
	{
        
		L[ R[a[i]]/*③*/ ] = L[a[i]];
        R[L[a[i]]] = R[ a[i]/*④*/ ];
        
        cout<< "001:L["<<a[i]<<"]="<<L[a[i]]<<"  R["<<a[i]<<"]="<<R[a[i]]<<endl;
		cout<<"L["<<R[a[i]]<<"]="<<L[ R[a[i]]/*③*/ ]<<" R["<<L[a[i]]<<"]="<<R[L[a[i]]]<<endl;
		//cout<< "002:L["<<a[i]<<"]="<<L[a[i]]<<"  R["<<a[i]<<"]="<<R[a[i]]<<endl;
    	cout<<"**************************"<<endl;
	}
    
    for (int i = 1; i <= n; ++i) {
    	cout << L[i]/*⑤*/ << " ";
    }
    cout<<endl;
	
	for (int i = 1; i <= n; ++i) {
    	cout << R[i]/*⑤*/ << " ";
    }
    
    cout << endl;
    return 0;
}



1.正确答案: a[x] = i

2.正确答案: i+1

3.正确答案: R[a[i]]

4.正确答案: a[i]

5.正确答案: R[i]



相关的链接:

NOIP2018普及组初赛 完善程序 第2题《双向链表》noip2018pujiA4.2 - 知乎

https://www.cnblogs.com/Attention/p/9821031.html

https://www.cnblogs.com/littlehb/p/10625192.html

NOIP2018普及组初赛 完善程序 第2题《双向链表》noip2018pujiA4.2 - 知乎

NOIp2018普及组初赛解题报告

https://www.cnblogs.com/Attention/p/9821031.html

NOIP 2018 普及组初赛之程序完善题T2

NOIP 2018 普及组初赛之程序完善题T2_hnjzsyjyj的博客-CSDN博客

https://www.cnblogs.com/huaruoji/articles/11700821.html

NOIP2018普及组初赛 完善程序 第2题《双向链表》noip2018pujiA4.2 - 知乎

备考 | NOIP2018初赛普及组+提高组真题及答案参考!

备考 | NOIP2018初赛普及组+提高组真题及答案参考!_个数

2018年NOIP普及组完善程序题2—右侧第一个更大值

2018年NOIP普及组完善程序题2—右侧第一个更大值_少儿编程乔老师的博客-CSDN博客

NOIP 提高组 初赛 四、阅读程序写结果 习题集(五)NOIP2006-NOIP2007

NOIP 提高组 初赛 四、阅读程序写结果 习题集(五)NOIP2006-NOIP2007_mrcrack的博客-CSDN博客









CSP-J CSP-S NOI初赛

https://blog.csdn.net/dllglvzhenfeng/category_11823100.html

2022年暑期及9月份CSP-J1 CSP-S1初赛 培训计划及学习要点

2022年暑期及9月份CSP-J1 CSP-S1初赛 培训计划及学习要点_dllglvzhenfeng的博客-CSDN博客

NOIP普及组2006-2018初赛 2019 CSP-J1 2020 CSP-J1 完善程序题

NOIP普及组2006-2018初赛 2019 CSP-J1 2020 CSP-J1 完善程序题-CSDN博客

NOIP2006-2018 提高组 初赛试题完善程序题 CSP-S 2019 2020 初赛试题完善程序题

NOIP2006-2018 提高组 初赛试题完善程序题 CSP-S 2019 2020 初赛试题完善程序题_dllglvzhenfeng的博客-CSDN博客

CSP-J CSP-S 初赛相关的书籍

CSP-J CSP-S 初赛相关的书籍_dllglvzhenfeng的博客-CSDN博客

CSP-J1 CSP-S1 第1轮 初赛 考前强化训练

CSP-J1 CSP-S1 第1轮 初赛 考前强化训练-CSDN博客

CSP-J1 CSP-S1第1轮 初赛 如何拿到好成绩(60分及以上)

CSP-J1 CSP-S1第1轮 初赛 如何拿到好成绩(60分及以上)-CSDN博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dllglvzhenfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值