社区讨论
使用二分只有十分
P1873[COCI 2011/2012 #5] EKO / 砍树参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo15kxjr
- 此快照首次捕获于
- 2023/10/22 15:34 2 年前
- 此快照最后确认于
- 2023/11/02 15:07 2 年前
CPP
#include<bits/stdc++.h>
using namespace std ;
const int N=1000005 ;
const long long M=2*1e9+5;
int n ;
long long m ;
int tree[N] ;
int l,r ;
int main()
{
scanf("%d%lld",&n,&m) ;
for (int i=1 ;i<=n ;++i) scanf("%d",&tree[i]) ;
sort(tree+1,tree+1+n) ;
l=tree[1];r=tree[n];
while(r>=l)
{
int mid = (l+r) >> 1 ;
long long ans = 0;
for(int i=n ;i>=1 ;--i)
{
if (tree[i] <= mid) break ;
ans += tree[i]-mid ;
}
if (ans == m)
{
cout << mid ;
break ;
} else if (ans > m)
{
l = mid+1 ;
} else if (ans < m)
{
r = mid-1 ;
}
}
}
求教大佬,我的二分写法具体哪里出错
回复
共 3 条回复,欢迎继续交流。
正在加载回复...