hdu4882 水贪心
生活随笔
收集整理的這篇文章主要介紹了
hdu4882 水贪心
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意:
? ? ?給你n個(gè)任務(wù),每個(gè)任務(wù)有兩個(gè)權(quán)值,t[i],b[i],前面的是完成任務(wù)所需時(shí)間,后面的那個(gè)是個(gè)參數(shù),每個(gè)任務(wù)完成的代價(jià)是完成當(dāng)前任務(wù)總時(shí)間(之前的+現(xiàn)在的)
sumt * b[i],問你完成所有任務(wù)的總花費(fèi)最小是多少。
思路:
? ? ?水貪心吧,不給證明了,沒啥意思,就想象一下,那個(gè)東西價(jià)值貴就先干那個(gè)就行了
? ? ?給你n個(gè)任務(wù),每個(gè)任務(wù)有兩個(gè)權(quán)值,t[i],b[i],前面的是完成任務(wù)所需時(shí)間,后面的那個(gè)是個(gè)參數(shù),每個(gè)任務(wù)完成的代價(jià)是完成當(dāng)前任務(wù)總時(shí)間(之前的+現(xiàn)在的)
sumt * b[i],問你完成所有任務(wù)的總花費(fèi)最小是多少。
思路:
? ? ?水貪心吧,不給證明了,沒啥意思,就想象一下,那個(gè)東西價(jià)值貴就先干那個(gè)就行了
價(jià)值等于 b[i] / t[i],價(jià)值貴的放到最后干會(huì)吃虧的。
#include<stdio.h> #include<algorithm> using namespace std;typedef struct {__int64 x ,y;double key; }NODE;bool camp(NODE a ,NODE b) {return a.key > b.key; }NODE node[110000];int main () {int n ,i;while(~scanf("%d" ,&n)){for(i = 1 ;i <= n ;i ++)scanf("%I64d" ,&node[i].x);for(i = 1 ;i <= n ;i ++){scanf("%I64d" ,&node[i].y);node[i].key = node[i].y * 1.0 / node[i].x;}sort(node + 1 ,node + n + 1 ,camp);__int64 sum = 0 ,ans = 0;for(i = 1 ;i <= n ;i ++){sum += node[i].x;ans += sum * node[i].y;}printf("%I64d\n" ,ans);}return 0; }
總結(jié)
以上是生活随笔為你收集整理的hdu4882 水贪心的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu4869 费马小+快速幂
- 下一篇: hdu4876 深搜+(随机枚举剪枝)