題目大意:有$n$個物品,第$i$個物品在$p_i$,大小為$w_i$,你在$0$,要求移動距離加上大小總和小於$m$,問你最多可以拿多少物品
題解:貪心, 按距離排序,每次遇到乙個物品就把大小加入乙個大根堆,若堆中元素大小和加上距離大於$m$,就把最大值刪去,直到符合
卡點:無
c++ code:
#include #include #include #define maxn 100010long long n, m, ans;
struct node
} s[maxn];
std::priority_queueq;
int main()
std::sort(s + 1, s + n + 1);
long long res = 0, sum = 0;
for (int i = 1; i <= n; i++)
ans = std::max(res, ans);
} printf("%lld\n", ans);
return 0;
}
P2107 小Z的AK計畫(優先佇列 貪心)
水一發優先佇列的水題。這個題貌似以前有做過類似的。具體的方法是用大根堆輔助貪心演算法得出正解。可以看出來,如果小z走到了某個地方,那麼他最遠一定是到了這裡,不可能有再走回來這種操作,因為很明顯那樣不是最優解。然後我們基於剛才的考慮貪心,如果走的遠近確定了,那麼我們的選擇一定是最小的那些店,維護乙個大...
小Z的 AK 計畫 洛谷p2147
題目描述 在小z的家鄉,有機房一條街,街上有很多機房。每個機房裡都有一萬個人在切題。小z剛刷完codechef,準備出來逛逛。機房一條街有 n 個機房,第 i 個機房的座標為 xi 小z的家座標為 0。小z在街上移動的速度為1,即從 x1 到 x2 所耗費的時間為 x1 x2 每個機房的學生數量不同...
小Z的AK計畫
洛谷鏈結 在小z的家鄉,有機房一條街,街上有很多機房。每個機房裡都有一萬個人在切題。小z剛刷完codechef,準備出來逛逛。機房一條街有 n 個機房,第 i 個機房的座標為 xi 小z的家座標為 0。小z在街上移動的速度為1,即從 x1 到 x2 所耗費的時間為 x1 x2 每個機房的學生數量不同...