HDU 4882 ZCC Loves Codefires
2014-07-25 08:58
489 查看
排序
首先,看到这种题如果确定是排序,第一反应就是排序条件:Ei/Ki ,或者Ki/Ei。。。(注意浮点数)
对于两个题i,j;判断这两个题的顺序方式如下:
设两个题之前所有题时间和为 tt;
则 若i 在j 前:score(i)=Ki*(tt+Ei)+Kj*(tt+Ei+Ej);
j 在i 前:score(j)=Kj*(tt+Ej)+Ki*(tt+Ej+Ei);
两式相减得: score(i)-score(j)=Kj*Ei-Ki*Ej;
所以,若想使score(i)<score(j),则有Kj*Ei<Ki*Ej;
因为 Ei>=1,Ki>=1;所以Ei/Ki<Ej/Kj;
ps:ans可能会超int,所以用long long;注意输出long long。
首先,看到这种题如果确定是排序,第一反应就是排序条件:Ei/Ki ,或者Ki/Ei。。。(注意浮点数)
对于两个题i,j;判断这两个题的顺序方式如下:
设两个题之前所有题时间和为 tt;
则 若i 在j 前:score(i)=Ki*(tt+Ei)+Kj*(tt+Ei+Ej);
j 在i 前:score(j)=Kj*(tt+Ej)+Ki*(tt+Ej+Ei);
两式相减得: score(i)-score(j)=Kj*Ei-Ki*Ej;
所以,若想使score(i)<score(j),则有Kj*Ei<Ki*Ej;
因为 Ei>=1,Ki>=1;所以Ei/Ki<Ej/Kj;
ps:ans可能会超int,所以用long long;注意输出long long。
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; typedef long long ll; const int maxn=100010; struct node { int e,k; }p[maxn]; bool cmp (node x,node y){ if (x.e*1.0/x.k<y.e*1.0/y.k) return true ; return false ; } int main (){ int n; ll t,ans; while (~scanf ("%d",&n)){ for (int i=0;i<n;i++) scanf ("%d",&p[i].e); for (int i=0;i<n;i++) scanf ("%d",&p[i].k); sort (p,p+n,cmp); t=ans=0; for (int i=0;i<n;i++){ t+=p[i].e; ans+=t*p[i].k; }//cout<<p[1].e*1.0/p[1].k<<endl; printf ("%I64d\n",ans); } return 0; }
相关文章推荐
- hdu 4882 ZCC Loves Codefires 2014年多校联合第二场
- HDU 4882 ZCC Loves Codefires(2014多校第二场1011)(贪心)
- hdu 4882 ZCC Loves Codefires(贪心)
- hdu 4882 ZCC Loves Codefires(贪心)
- HDU 4882 ZCC Loves Codefires yy
- hdu 4882 ZCC Loves Codefires(贪心)
- HDU 4882 ZCC Loves Codefires (贪心)
- HDU 4882 ZCC Loves Codefires(贪心水)
- HDU 4882 ZCC Loves Codefires (贪心)
- HDU 4882 ZCC Loves Codefires(贪心)
- hdu 4882 ZCC Loves Codefires(数学题+贪心)
- hdu 4882 ZCC Loves Codefires (贪心 推导)
- HDU 4882 ZCC Loves Codefires
- HDU 4882 ZCC Loves Codefires 还是利用率
- 2014多校第二场1011 || HDU 4882 ZCC Loves Codefires (贪心)
- hdu 4882 ZCC Loves Codefires(数学题+贪心)
- hdu 4882 ZCC Loves Codefires
- 2014 Multi-University Training Contest 2 - 1011 / hdu 4882 ZCC Loves Codefires
- hdoj 4882 ZCC Loves Codefires 【贪心】
- HDOJ 4882 ZCC Loves Codefires