p1047+校门外的树c
时间: 2023-12-24 12:04:38 浏览: 115
根据引用[1]和引用的描述,题目大意是在一条长度为L的马路上,有一排树,每两棵相邻的树之间的间隔都是1米。现在要移走一些树,使得剩下的树之间的间隔都是k米,问最多能剩下多少棵树。
思路如下:
1. 首先读入L和k,以及要移走的树的数量m。
2. 定义一个长度为L+1的数组a,表示每个位置上是否有树,初始值都为1。
3. 读入m个要移走的树的位置,将这些位置上的树的值设为0。
4. 从左到右遍历数组a,如果当前位置上有树,则向右数k个位置,将这个位置到当前位置之间的所有位置上的树的值都设为0。
5. 从右到左遍历数组a,如果当前位置上有树,则向左数k个位置,将这个位置到当前位置之间的所有位置上的树的值都设为0。
6. 统计数组a中值为1的元素个数,即为剩下的树的数量。
以下是Python代码实现:
```python
L, k, m = map(int, input().split())
a = [1] * (L + 1)
for i in range(m):
pos = int(input())
a[pos] = 0
count = 0
for i in range(0, L + 1, k + 1):
if a[i] == 1:
for j in range(i - k, i):
if j >= 0:
a[j] = 0
count += 1
for i in range(L, -1, -(k + 1)):
if a[i] == 1:
for j in range(i + 1, i + k + 1):
if j <= L:
a[j] = 0
print(sum(a))
```
阅读全文
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20250102104920.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20250102104920.png)