酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

7927: 【C3】星空下的萤火虫 时间限制: 1 Sec 内存限制: 128 MB 提交: 0 解决: 33 [提交][状态][命题人:xuc] 题目描述 在一个星光璀璨的夜晚,许多小萤火虫在草地上飞舞,它们决定在不同的位置闪烁。每只萤火虫的位置都不相同,比如当两只萤火虫之间的距离小于 5 厘米时,如果这个安全距离内还有其他萤火虫在闪烁,就可以让萤火虫飞走(即如果第i−1 只萤火虫与第 i+1 只萤火虫的距离小于等于 5 厘米,则第 i 只萤火虫可以飞走)。 你需要帮助小萤火虫们在确保星空下的光线依然闪烁的情况下,找出在一段区域内可以飞走的萤火虫的最大数量。 注意:距离草地边缘最近和最远的两只萤火虫必须保持闪烁。 输入 第一行包含两个整数,n(萤火虫数量)和 dist(安全距离)。 第二行包含 n 个数字,表示每只萤火虫的位置 pi。 输出 输出一个整数,表示可以关闭的萤火虫的最大数量。 样例输入 3 3 1 2 3 样例输出 1 提示 对于 100% 的数据,1≤n≤105,保证 dist 在 int 整型范围之内。 C++,简单,贪心算法

以下是使用贪心算法解决此问题的 C++ 代码: ```cpp #include <iostream> #include <vector> int maxFlyingFireflies(int n, int dist, std::vector<int>& positions) { int count = 0; for (int i = 1; i < n - 1; ++i) { if (positions[i + 1] - positions[i - 1] <= dist) { ++count; } } return count; } int main() { int n, dist; std::cin >> n >> dist; std::vector<int> positions(n); for (int i = 0; i < n; ++i) { std::cin >> positions[i]; } std::cout << maxFlyingFireflies(n, dist, positions) << std::endl; return 0; } ``` 额外需要注意的逻辑点: 1. 输入数据的合法性检查。 2. 考虑边界情况,如只有两只萤火虫的情况。 3. 对输出结果的合理性进行判断。 [2025-05-24 16:49:47 | AI写代码神器 | 255点数解答]

相关提问