1 条题解
-
1
一年前的代码
我们可以发现,要使坐的人尽可能的多,显而易见的是第一个坐的人坐在最左边,第二个人坐在他右边两列……,这是一种贪心的思路,假如我们不这么坐,就会浪费最左边的位置,这种解法一定不是最优的
既然这么坐了,又由题目的规则,我们可以把两行简化成一行(每列只能最多坐一个人,因此没必要考虑两行),最左边坐了人,我们用1表示坐人,0表示没坐人
n = 5 1 0 1 0 1 ------------------ n = 6 1 0 1 0 1 0 ------------------ n = 7 1 0 1 0 1 0 1
这个1的个数小学生都能找到:n为偶数的时候是,n为奇数的时候是,我们也可以写成一个统一的形式:
代码不难得出
C++
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; cout << n/2+n%2; return 0; }
Python
n = int(input()) print(n//2+n%2)
- 1
信息
- ID
- 759
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 107
- 已通过
- 80
- 上传者