ACGO #挑战赛 15th T3题解
2025-02-23 22:58:00
发布于:江苏
46阅读
0回复
0点赞
本次挑战赛没有橙色难度,不过我觉得这题给个黄难度稍微高了点,给橙正好。
话不多说,我们先上题解:
这道题目可以很明显看出是贪心,从小到大的将源石虫能跑的距离排序,然后每次枚举选出大于需求路程的最小bi即可,接着把选出来的源石虫删掉(由于c++自带的数组删除不了元素所以将其路程设为0,虽然会略微增加时间复杂度但对这题AC没啥影响),如果没有满足条件的源石虫,那就直接输出no和遍历次数i了。
注意,这里使用i遍历时,i的初始值应为1,因为我们是用i表示通过的点的。
AC代码奉上:
#include <bits/stdc++.h>
using namespace std;
int a[10005],b[10005];
int n;
int main()
{
cin >> n;
for(int i = 1;i <= n;i++)
cin >> a[i];
for(int i = 1;i <= n;i++)
cin >> b[i];
sort(b+1,b+n+1);
for(int i = 1;i <= n;i++)
{
bool vi = 0;//判断是否能跑完一段
int need = a[i+1] - a[i];//需要跑的路程
for(int j = 1;j <= n;j++)
{
if(b[j] >= need)
{
b[j] = 0;
vi = 1;
break;
}
}
if(!vi)
{
cout << "NO" << endl << i;
return 0;
}
}
cout << "YES";
return 0;
}
这里空空如也
有帮助,赞一个