======7.23CF加训====== 莫名感觉CF的架构比牛客不容易上手,总之用起来有点艰难…… 贴一个补题吧: =====B===== 不知为何,GNU C11始终过不了,但是GNU C++ 17就可以……不知哪里出了问题。 #include #include const double pi=acos(-1); int n; double g[15],l[15],k[15]; double Sin(double k) { return (k>0?1:-1)*sqrt((k*k)/(1+(k*k))); } double Cos(double k) { return sqrt(1/(1+(k*k))); } double solve(double k0,double kn) { double c=(k0-kn)/(g[n]-g[0]+g[n-1]-g[1]),rt=0; int i; for(i=1;i<=n;i++) { k[i]=kn+c*(g[n]-g[i-1]+g[n-1]-g[i]); rt+=l[i]*Sin(k[i]); } return rt; } double judge(double k0) { double ll=-pi/2,rr=0,mid; while((rr-ll)>3e-16) { mid=(ll+rr)/2; (solve(tan(k0),tan(mid))>0)?(rr=mid):(ll=mid); } double rt=0; int i; for(i=1;i<=n;i++) { rt+=l[i]*Cos(k[i]); } return rt; } int main() { double L; scanf("%d%lf",&n,&L); int i; for(i=1;i<=n;i++) { scanf("%lf",&l[i]); g[i]=g[i-1]+l[i]; } double ll=0,rr=pi/2,mid; while((rr-ll)>3e-16) { mid=(ll+rr)/2; (judge(mid)