| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
哪位大佬帮看下我的代码哪里有问题。。。实在找不到了。。In Reply To:二分WA的童鞋注意一下写法 Posted by:Onlynagesha at 2017-11-23 17:01:28 #include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 1e6 + 10;
int n, k;
struct Jel
{
int w, v, id;
double y;
}jel[maxn];
bool cmp(Jel a, Jel b)
{
return a.y > b.y;
}
bool C(double r)
{
for(int i = 0; i < n; i++)
{
jel[i].y = jel[i].v - jel[i].w * r;
}
sort(jel, jel + n, cmp);
double sum = 0;
for(int i = 0; i < k; i++)
{
sum += jel[i].y;
}
return sum >= 0.0;
}
void solve()
{
double l = 0.0, r = 1.0;
double mid;
while(r - 1e-6 > l)
{
mid = (l + r) / 2;
if(C(mid)) l = mid;
else r = mid;
}
for(int i = 0; i < k - 1; i++) //
{
printf("%d ", jel[i].id);
}
printf("%d\n", jel[k - 1].id);
}
int main()
{
scanf("%d %d", &n, &k);
for(int i = 0; i < n; i++)
{
scanf("%d %d", &jel[i].v, &jel[i].w);
jel[i].id = i + 1;
}
solve();
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator