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 |
无语了,G++一直WA,换成C++就过了有大佬可以解释一下为什么吗? 附程序 #include <cstdio> #include <iostream> #include <algorithm> #include <math.h> #include <cmath> #define mem0(a) memset(a,0,sizeof(a)) #define meminf(a) memset(a,0x3f,sizeof(a)) using namespace std; typedef long long ll; typedef long double ld; typedef double db; const int maxn=10005,inf=0x3f3f3f3f; const ll llinf=0x3f3f3f3f3f3f3f3f; const db eps=1e-6; struct Pack{ db a,b,d; }; Pack p[maxn]; bool cmp(Pack x,Pack y) { return x.d<y.d; } db Dinkelbach(int n,int k) { db ans=0,l; while (true) { l=ans; int i; db s0,s1; for (i=1;i<=n;i++) { p[i].d=p[i].a-l*p[i].b; } sort(p+1,p+n+1,cmp); s0=s1=0; for (i=k+1;i<=n;i++) { s0+=p[i].a;s1+=p[i].b; } ans=s0/s1; if (fabs(l-ans)<eps) return ans; } } int main() { int n,k; scanf("%d%d",&n,&k); while (n||k) { int i; ll s1,s0; s1=s0=0; for (i=1;i<=n;i++) scanf("%lf",&p[i].a); for (i=1;i<=n;i++) scanf("%lf",&p[i].b); db ans=Dinkelbach(n,k); printf("%.0lf\n",ans*100.0); scanf("%d%d",&n,&k); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator