移动应用开发专业,新郑网站优化,搜索引擎优化案例,公司企业网站程序下载正题
题目链接:https://gmoj.net/senior/#contest/show/3222/0 题目大意 nnn个ai,bia_i,b_iai,bi#xff0c;求一个xxx使得最小化∑i1n∣aixbi∣\sum_{i1}^n|a_ixb_i|i1∑n∣aixbi∣ 解题思路
每个∣aixbi∣|a_ixb_i|∣aixbi∣可以视为一个分两段的函数#…正题
题目链接:https://gmoj.net/senior/#contest/show/3222/0 题目大意
nnn个ai,bia_i,b_iai,bi求一个xxx使得最小化∑i1n∣aixbi∣\sum_{i1}^n|a_ixb_i|i1∑n∣aixbi∣ 解题思路
每个∣aixbi∣|a_ixb_i|∣aixbi∣可以视为一个分两段的函数那么把所有加起来就是一个分n1n1n1段的函数枚举分段点然后每个段取最大值即可。 codecodecode
#includecstdio
#includecstring
#includealgorithm
#includecmath
using namespace std;
const int N3e510;
const double eps1e-8;
int n,p[N],cnt;
double A,B,c[N],a[N],b[N],ans;
bool cmp(int x,int y)
{return c[x]c[y];}
int main()
{freopen(spongebob.in,r,stdin);freopen(spongebob.out,w,stdout);scanf(%d,n);for(int i1;in;i){scanf(%lf%lf,a[i],b[i]);if(fabs(a[i])eps){c[i]-b[i]/a[i],p[cnt]i;if(a[i]0)a[i]-a[i],b[i]-b[i];}else b[i]abs(b[i]);Aa[i];Bb[i];}sort(p1,p1cnt,cmp);ans1e18;double l-1e18,rc[p[1]];for(int i1;icnt;i){if(l!r){if(A0)ansmin(ans,A*lB);else ansmin(ans,A*rB);}A-2.0*a[p[i]];B-2.0*b[p[i]];lr;rc[p[i1]];}if(A0)ansmin(ans,A*lB);else ansmin(ans,A*rB);printf(%lf,ans);
}