HDU4882

来源:互联网 发布:js数组转为json字符串 编辑:程序博客网 时间:2024/06/10 02:15
*题意:给定一些任务,每个任务有e,k,e表示完成需要时间,k表示完成后消耗,为完成时间t * k,求一个顺序使得完成消耗最少
#include<iostream>//A了,不该成long long 就会wa #include<cstring>#include <algorithm>  #define maxn 100005 using namespace std;struct Q{long long time;long long k;}q[maxn];int cmp(Q a,Q b){return a.time*b.k<b.time*a.k;}int main(){int t;while(cin>>t){if(t<=0)break;for(int i=0;i<t;i++)cin>>q[i].time;for(int i=0;i<t;i++)cin>>q[i].k;sort(q,q+t,cmp);//函数要会用啊long long now=0;long long ans=0;for(int i=0;i<t;i++){ans+=q[i].time;now+=ans*q[i].k;}cout<<now<<endl;} return 0;}

思路:贪心,知道k大的尽量早完成,t小的尽量早完成,所以t / k小的尽量早完成,排个序即可,不错的思路啊 ,有点神奇 ,找规律也行吧
 */
0 0
原创粉丝点击