【BZOJ3850】【HDU4882】ZCC Loves Codefires 数论,叉积,贪心 “再不刷它就土了”系列
2015-01-18 23:45
549 查看
转载请注明出处/article/2544932.html
这样如果转载瞎了读者还能看到干净的原文~~
毕竟是HDU收录的题,,我怀疑它要变土。。
题意:
有n个项目,然后第一行输入损失度,第二行输入耗时
然后安排一下顺序,
每一项的消耗为当前已经做了的(包括此项)总时间*损失度。
求最小总消耗。
首先这道题是贪心,我们可以贪心排序项目。
策略:
证明:
首先我们考虑将项目随意排序!
然后(思想上)得到ans_now,这个时候我们可以交换相邻两项,使得结果更优当且仅当满足上述策略。
而我们的这次交换[对于全局是没有影响的]!
这里再对于上一句的[]再证明一下:{
首先影响分两个方面,
①:其它项目时刻的损失:因为对于其它的相对顺序没有改变,所以没有影响
②:对于其它"交换"的影响:
我们发现这个策略可以交换一下项,使得每一边都是一种项目的变量——x/y<a.x/a.y
或者直接发现:这不是叉积么?这样就满足了单调性,使得交换成立,不影响其它次的交换。
}
而显然这样的交换是可以最终满足两两相邻之间的优劣性顺序,同时在上两行的证明中有说“单调性”
这样就满足了全局最优。
可能说得有点扯淡,但是思路上应该差不多。
姑且这样吧。
代码:
这样如果转载瞎了读者还能看到干净的原文~~
毕竟是HDU收录的题,,我怀疑它要变土。。
题意:
有n个项目,然后第一行输入损失度,第二行输入耗时
然后安排一下顺序,
每一项的消耗为当前已经做了的(包括此项)总时间*损失度。
求最小总消耗。
首先这道题是贪心,我们可以贪心排序项目。
策略:
bool operator < (const YYC &a)const {return x*a.y<y*a.x;}
证明:
首先我们考虑将项目随意排序!
然后(思想上)得到ans_now,这个时候我们可以交换相邻两项,使得结果更优当且仅当满足上述策略。
而我们的这次交换[对于全局是没有影响的]!
这里再对于上一句的[]再证明一下:{
首先影响分两个方面,
①:其它项目时刻的损失:因为对于其它的相对顺序没有改变,所以没有影响
②:对于其它"交换"的影响:
我们发现这个策略可以交换一下项,使得每一边都是一种项目的变量——x/y<a.x/a.y
或者直接发现:这不是叉积么?这样就满足了单调性,使得交换成立,不影响其它次的交换。
}
而显然这样的交换是可以最终满足两两相邻之间的优劣性顺序,同时在上两行的证明中有说“单调性”
这样就满足了全局最优。
可能说得有点扯淡,但是思路上应该差不多。
姑且这样吧。
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 101000
using namespace std;
struct YYC
{
int x,y;
bool operator < (const YYC &a)const {return x*a.y<y*a.x;}
}fev
;
int n;
long long ans,sum;
int main()
{
int i;scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%d",&fev[i].x);
for(i=1;i<=n;i++)scanf("%d",&fev[i].y);
sort(fev+1,fev+n+1);
for(i=1;i<=n;i++)sum+=fev[i].x,ans+=sum*fev[i].y;
cout<<ans<<endl;
return 0;
}
相关文章推荐
- BZOJ 3850: ZCC Loves Codefires【贪心】
- 【贪心】bzoj3850 ZCC Loves Codefires
- BZOJ3850: ZCC Loves Codefires
- hdu4882-ZCC Loves Codefires(贪心)
- BZOJ3850: ZCC Loves Codefires
- 【BZOJ】3850: ZCC Loves Codefires(300T就这样献给了水题TAT)
- BZOJ3850 ZCC Loves Codefires
- BZOJ3850 ZCC Loves Codefires
- hdu4882 ZCC Loves Codefires(贪心)
- Hdu4882 - ZCC Loves Codefires - 贪心(2014 Multi-University Training Contest 2-1011)
- 【BZOJ】【3850】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(数学题+贪心)
- HDU4882-ZCC Loves Codefires
- HDU 4882 ZCC Loves Codefires (贪心)
- HDU 4882 ZCC Loves Codefires(贪心)
- hdoj 4882 ZCC Loves Codefires 【贪心】
- 2014多校第二场1011 || HDU 4882 ZCC Loves Codefires (贪心)