2020年4月月赛乙组 T1.伙伴

简介: 2020年4月月赛乙组 T1.伙伴

2020年4月月赛乙组 T1.伙伴

内存限制: 256 Mb时间限制: 1000 ms

题目描述

有 n 名士兵参加了一场激烈的战斗。每个士兵身边有两个伙伴,第 i 号士兵的左侧伙伴编号为 i−1,右侧伙伴的编号为和 i+1。1 号士兵没有左侧伙伴,n 号士兵没有右侧伙伴。

在战斗过程中,陆续牺牲了 m 名士兵。一旦一名士兵牺牲了,存活的士兵就会相互接近,形成新的伙伴关系。给定士兵们牺牲的顺序及编号,请你输出当每个士兵牺牲时,新构成伙伴关系的两个士兵的编号。

输入格式

第一行:两个正整数表示 n 和 m。

第二行到第 m+1 行:在第 i+1 行,有一个正整数 si ,表示第 i 个牺牲的士兵编号。

输出格式

共 mm 行:每行两个整数,第 ii 行表示当 si 牺牲时,左右伙伴的编号,如果某侧没有伙伴,输出一个 *。

数据范围

对于 30% 的数据,1≤n≤10000;

对于 60% 的数据,1≤n≤100000;

对于 100% 的数据,1≤n≤1000000,1≤m<n。

样例数据

输入:

5 3

3

2

1

输出:

2 4

1 4

* 4

这是一道挺好的链表模拟题  对于初学链表的同学 难度不大也容易理解。

解题思路一  数组暴力模拟

建立数组模拟每一个士兵的状态,0为存活,1为牺牲,每次查找都搜索他左侧第一个存活的士兵和右侧第一个存活的士兵。

时间复杂度为平方级别。能够拿到60分。

1. #include<bits/stdc++.h>
2. using namespace std;
3. int a[1000005];
4. int main()
5. {
6.  int n,m,t;
7.  cin>>n>>m;
8.  while(m--){
9.    cin>>t;
10.     int i=t-1;
11.     while(a[i]>=1&&a[i]!=0)i--;
12.     if(i<1) cout<<"* ";
13.     else cout<<i<<" ";
14.     i=t+1;
15.     while(a[i]<=n&&a[i]!=0)i++;
16.     if(i>n) cout<<"*"<<endl;
17.     else cout<<i<<endl;
18.     a[t]=1;
19.   }
20.   return 0;
21. }

解题思路二 模拟双向链表

根据相同的原理,我们可以给每个士兵都分配两个值:左边(前面)的士兵和右边(后面)的士兵。

当一个士兵牺牲时,更新他左边士兵的右边士兵为他的右边士兵和他右边士兵的左边士兵为他的左边士兵。

在输入时,只需根据对应的下标访问就可以了。

总体的时间复杂度降到了O(n)。能够拿到100分。

1. #include<bits/stdc++.h>
2. using namespace std;
3. struct Nod{
4.  int lf,rt;
5. }a[1000005];
6. int main()
7. {
8.  int n,m,t;
9.  cin>>n>>m;
10.   for(int i=1;i<=n;i++){
11.     a[i].lf=i-1;
12.     a[i].rt=i+1;
13.   }
14.   while(m--){
15.     cin>>t;
16.     if(a[t].lf==0) cout<<"* ";
17.     else cout<<a[t].lf<<" ";
18.     if(a[t].rt==n+1)cout<<"*"<<endl;
19.     else cout<<a[t].rt<<endl;
20.     a[a[t].rt].lf=a[t].lf;
21.     a[a[t].lf].rt=a[t].rt;
22.   }
23.   return 0;
24. }


相关文章
|
人工智能 安全 Linux
龙蜥社区理事长走进中兴 交流会圆满结束!
中兴将凭借自身优势在社区开展系列生态规划,助力龙蜥社区发展。
|
传感器 人工智能 自动驾驶
来听听阿里云伙伴们的心里话
来听听阿里云伙伴们的心里话
86 0
|
人工智能 算法 Cloud Native
龙蜥社区第三届理事大会圆满落幕!凝思、蚂蚁、中兴 3 家理事加入,年度卓越贡献奖出炉
本次大会全票通过 3 家企业的理事单位申请、全票通过举办 2023 年度龙蜥峰会的表决、发布了“理事单位管理制度”,并向全体理事汇报 Anolis OS 23 的最新进展、2023 年度社区活动计划。
龙蜥社区第三届理事大会圆满落幕!凝思、蚂蚁、中兴 3 家理事加入,年度卓越贡献奖出炉
|
存储 人工智能 达摩院
特辑 | 阿里云智能总裁张建锋在2022数智化转型峰会上的新春寄语
特辑 | 阿里云智能总裁张建锋在2022数智化转型峰会上的新春寄语
278 0
|
人工智能 新能源 区块链
|
人工智能
2019科技创新创业高峰论坛即将举办,三大看点抢先看
记者最新消息,在2019年“全国双创周”活动期间,以“科技引领,双创升级”为主题的2019科技创新创业高峰论坛将于6月13日在双创周主会场浙江省杭州市梦想小镇国际会议中心举办。
阿里巴巴诸神之战山东站暨智汇谷创新创业大赛举行首场海选
12月19日,阿里巴巴诸神之战山东站暨智汇谷创新创业大赛首场“海选赛”在聊城正式举行,共有14支团队从近百家报名团队中获得公开路演的资格。
阿里巴巴诸神之战山东站暨智汇谷创新创业大赛举行首场海选