Warning: session_start(): open(/tmp/sess_32b5dba40389e3843ae47b176b93a5c2, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239
Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Writing /data/wiki/data/cache/d/de2edb2fcb553ea79b79c722a4e13dbc.captchaip failed
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
======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)