HDU6438(貪心技巧)

2022-02-27 15:05:39 字數 1529 閱讀 1785

第一眼喜聞樂見的**問題dp可以暴力,然鵝時間不允許。

於是考慮怎麼貪。

這篇題解說得很生動了。

因為每支**都有**的潛力所以肯定都加在優先佇列裡。

然後考慮的是哪些需要加入兩次。這是我第二次見到類似的手法。當它比優先佇列隊首要大,可以賣,但是因為後面的還沒讀所以不知道是不是最優。那就先賣著,錢拿了,然後標記上它可能是個軸承,等到它成了隊首(顯然這時更便宜的**已經都跟「大客戶」配對完走掉了,或者至少跟軸承嫁接了)且讀到了更好的賣家,那它的軸承作用成功完成任務,當前這個更好的賣家作為接盤俠被標記為軸承。

注意標記不是bool的,因為同乙個數字可能出現很多次,用int計數。

1

#pragma comment(linker, "/stack:1024000000,1024000000")

2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include

13 #include 14 #include 15 #include 16 #include

17 #include 18 #include 19 #include 20 #include 21 #include 22

#define init(a, b) memset(a, b, sizeof(a))

23#define rep(i, a, b) for (int i = a; i <= b; i++)

24#define irep(i, a, b) for (int i = a; i >= b; i--)

25using

namespace

std;

2627 typedef double

db;28 typedef long

long

ll;29 typedef unsigned long

long

ull;

30 typedef pairp;

31const

int inf = 0x3f3f3f3f;32

const ll inf =1e18;

3334 template void read(t &x)

4344 template void

write(t x)

4950 template void

writeln(t x)

5455

const

int maxn = 1e5 + 5;56

intt, n, day;

57ll ans;

58 mapmark;

5960

intmain()

78q.push(x);79}

80 printf("

%lld %d\n

", ans, day * 2

);81}82

return0;

83 }

hdu 4864 Task 貪心 技巧

題目鏈結 一道很有技巧的貪心題目。題意 有n個機器,m個任務。每個機器至多能完成乙個任務。對於每個機器,有乙個最大執行時間xi和等級yi,對於每個任務,也有乙個執行時間xj和等級yj。只有當xi xj且yi yj的時候,機器i才能完成任務j,並獲得 500 xj 2 yj金錢。問最多能完成幾個任務,...

10 儲存HDU 貪心

description 話說上回講到海東集團面臨內外交困,公司的元老也只剩下xhd夫婦二人了。顯然,作為多年拼搏的商人,xhd不會坐以待斃的。一天,當他正在苦思冥想解困良策的時候,突然想到了自己的傳家寶,那是公司成立的時候,父親作為賀禮送來的乙個錦囊,徐父當時交代,不到萬不得已的時候,不要開啟它。現...

hdu 迷瘴 貪心

其實就是一道簡單貪心題,但第一次用分數做wa了,改用整數就對,也許是自己不夠細心,呵呵 如果是不夠細心的人,建議還是用整數吧 1 include 2 include 3 include 4using namespace std 5int cmp const void a,const void b 6...