P11388 [COCI 2024/2025 #1] 飞跃 / Skokovi
题目背景
译自 COCI 2024/2025 #1 T2。 5s,0.5G \texttt{5s,0.5G} 5s,0.5G。满分为 75 75 75。
题目描述
有 n n n 朵花,此外有一个正整数 k k k。第 i i i 朵花的高度为 a i a_i ai。
一开始,Filip 在第 1 1 1 朵花上。
当她在第 i i i 朵花上时,她可以飞跃到第 j j j 朵花上,当且仅当:
- i < j i\lt j i<j;
- ∣ a i − a j ∣ ≤ k |a_i-a_j|\le k ∣ai−aj∣≤k。
Filip 想要知道她能够飞跃到哪些花上。
输入格式
第一行,两个正整数 n , k n,k n,k。
第二行, n n n 个正整数 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,⋯,an。
输出格式
n n n 个整数,第 i i i 个整数为 0 \texttt{0} 0,代表不能跳到第 i i i 朵花上;第 i i i 个整数为 1 \texttt{1} 1,代表可以跳到第 i i i 朵花上。
输入输出样例 #1
输入 #1
5 2
5 4 8 7 2
输出 #1
1 1 0 1 1
输入输出样例 #2
输入 #2
5 3
10 15 14 8 9
输出 #2
1 0 0 1 1
说明/提示
对于 100 % 100\% 100% 的数据,保证:
- 1 ≤ n ≤ 2 × 1 0 5 1\le n\le 2\times 10^5 1≤n≤2×105;
- 1 ≤ a i , k ≤ 1 0 9 1\le a_i,k\le 10^9 1≤ai,k≤109。
| 子任务编号 | n ≤ n\le n≤ | 特殊性质 | 得分 |
|---|---|---|---|
| $ 1 $ | 2 × 1 0 5 2\times 10^5 2×105 | A | $ 25 $ |
| $ 2 $ | 1 0 3 10^3 103 | $ 25 $ | |
| $ 3 $ | 2 × 1 0 5 2\times 10^5 2×105 | $ 25 $ |
- 特殊性质 A: ∀ 1 ≤ i < n \forall 1\le i\lt n ∀1≤i<n, a i < a i + 1 a_i\lt a_{i+1} ai<ai+1。
C++实现
#include<bits/stdc++.h>
using namespace std;
int a[200005];
int main()
{
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
int minn=a[1],maxn=a[1];
cout<<"1 ";
for(int i=2;i<=n;i++)
{
if(minn-k<=a[i]&&a[i]<=maxn+k)
{
cout<<"1 ";
minn=min(minn,a[i]);
maxn=max(maxn,a[i]);
}
else cout<<"0 ";
}
return 0;
}

后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
用C++信奥P11388普及组提高 COCI 20242025 #1 飞跃 Skokovi&spm=1001.2101.3001.5002&articleId=145974960&d=1&t=3&u=4f6a16495bc94995afa7cbc8ad4f7dc5)
566

被折叠的 条评论
为什么被折叠?



