8 条题解
-
2
#include<algorithm> using namespace std; int n,m,a[10000]; /* 贪心,二分答案 第一步,找到要枚举的东西 第二步,找到要比较的东西m木材 找>=m的第一个值 高度找的是<=目标值的最后一个 */ bool f(int h) { int sum = 0; for(int i = 1;i <= n;i++) if(a[i] > h) sum += (a[i]-h); return sum >= m; } int main() { cin >> n >> m; for(int i = 1;i <= n;i++) cin >> a[i]; int l = 0,r = 1000000000; while(l < r) { int mid = (l + r + 1) >> 1; if(f(mid)) l = mid; else r = mid - 1; } cout << l; return 0; }````
信息
- ID
- 1280
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 667
- 已通过
- 163
- 上传者