BZOJ2802 [Poi2012]Warehouse Store

恩。。。贪心来着。。。

我们先贪心当天能不能满足客户要求,如果能就尽量满足。

好了现在不能满足怎么办?作为一个无良的商家,可以退掉以前的订单。。。(现实中真的可以?、、、)

为了让当前剩余货物总量尽可能大,当然是退掉之前要求最高的订单喽,于是用堆维护一下就好了

注意long long什么的就好了

 1 /**************************************************************
 2     Problem: 2802
 3     User: rausen
 4     Language: C++
 5     Result: Accepted
 6     Time:600 ms
 7     Memory:5108 kb
 8 ****************************************************************/
 9
10 #include <cstdio>
11 #include <queue>
12
13 using namespace std;
14 typedef long long ll;
15 const int N = 250005;
16
17 struct data {
18     int w, num;
19     data() {}
20     data(int _w, int _n) : w(_w), num(_n) {}
21
22     inline bool operator < (const data &x) const {
23         return num == x.num ? w < x.w : num < x.num;
24     }
25 };
26
27 int n, ans;
28 int a[N], b;
29 bool u[N];
30 ll now;
31 priority_queue <data> h;
32
33 inline int read() {
34     int x = 0;
35     char ch = getchar();
36     while (ch < ‘0‘ || ‘9‘ < ch)
37         ch = getchar();
38     while (‘0‘ <= ch && ch <= ‘9‘) {
39         x = x * 10 + ch - ‘0‘;
40         ch = getchar();
41     }
42     return x;
43 }
44
45 int main() {
46     int i;
47     n = read();
48     for (i = 1; i <= n; ++i)
49         a[i] = read();
50     for (i = 1; i <= n; ++i) {
51         b = read();
52         now += a[i];
53         if (now > b)
54             h.push(data(i, b)), now -= b, u[i] = 1, ++ans;
55         else if (!h.empty() && h.top().num > b) {
56             now += h.top().num - b, u[i] = 1, u[h.top().w] = 0;
57             h.pop(), h.push(data(i, b));
58         }
59     }
60     printf("%d\n", ans);
61     for (i = 1; i <= n; ++i)
62         if (u[i]) printf("%d ", i);
63     return 0;
64 }

时间: 2024-08-02 06:58:36

BZOJ2802 [Poi2012]Warehouse Store的相关文章

bzoj 2802: [Poi2012]Warehouse Store 题解

[原题] 2802: [Poi2012]Warehouse Store Time Limit: 10 Sec  Memory Limit: 64 MBSec  Special Judge Submit: 94  Solved: 54 Description 有一家专卖一种商品的店,考虑连续的n天. 第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他. 如果要满足顾客的需求,就必须要有足够的库存.问最多能够满足多少个顾客的需求. Input 第一

BZOJ 2802 Poi2012 Warehouse Store 堆+贪心

题目大意:有n天,早上进货中午卖,可以选择卖或者不卖,问最多可以卖出多少人 首先贪心的思想是如果当前能卖就卖 但是这样不一定是最优的 比如说我第一天来一个人把所有的库存都买走了 然后后面基本没有补给 后面的人都饿死了 因此我们维护一个大根堆来记录我们都卖出了多少份 如果有一个人买不到 我们去大根堆里寻找有没有买的比他多的 如果有 把之前的人取消 卖给这个人 这样虽然不能增加答案 但是可以增加库存 #include <cstdio> #include <cstring> #inclu

【BZOJ】2802: [Poi2012]Warehouse Store(贪心)

http://www.lydsy.com/JudgeOnline/problem.php?id=2802 自己yy了一下... 每一次如果够那么就买. 如果不够,考虑之前买过的,如果之前买过的比当前花费的钱多,那么就去掉之前买的,变成买现在的. 如何证明?不知道QAQ 还有...注意开longlong... #include <cstdio> #include <cstring> #include <cmath> #include <string> #inc

待 题表

题表 达哥终极杂题表Bzoj2839 hdu6021 Codeforces 804DBzoj2248 hdu5575 Codeforces 786CBzoj2013 bzoj2676 Codeforces 803CBzoj2386 bzoj3782 Codeforces 813DBzoj2699 cogs1667 Codeforces 814DBzoj4798 bzoj2064 Codeforces 814EBzoj4639 bzoj3505 Codeforces 815ABzoj4417 bz

12月刷题总结

各种被屠...学东西各种慢... QAQ 字符串: sam: [SPOJ]7258. Lexicographical Substring Search(后缀自动机) [SPOJ]1812. Longest Common Substring II(后缀自动机) [BZOJ]2555: SubString(后缀自动机) [BZOJ]3172: [Tjoi2013]单词(后缀自动机) [wikioi]3160 最长公共子串(后缀自动机) lcp: [BZOJ]1014: [JSOI2008]火星人pr

[題解](貪心/堆)luogu_P2107小Z的AK計劃

清明講過一道類似的,難度略大的:P3545 [POI2012]HUR-Warehouse Store 兩道題類似,都是暫時先把前面的加進候選集合里,如果超出限制的話就拿現在這個和前面的交換, 相當於不選前面那個選當前這個,應該是比較好的思想 這道題還有一個就是如果最優解要你走到那個點,那麼中間的路程是不可省略的,所以貪心時大可不考慮 反正實質上是個dp,取的是最大值 #include<bits/stdc++.h> #define ll long long using namespace std

堆及堆的变种

堆及堆的变种 声明 参考课件和讲授来自Accelerator,分析懒得打也来自他 堆的元素删除 借用标记的思想,我们维护一个和原堆同样性质(大根,小根)的堆,每次删除就把它扔到标记堆里面 当我们需要 pop 的时候,如果堆顶元素和删除堆顶元素相同, 那么就说明这个元素是我们之前删除过的,于是我们就在删除堆里面和这个堆里面同时 pop, 然后考察下一元素. 容易发现时间复杂度和空间复杂度没有什么实质性的变化. 题 luogu P3545 [POI2012]HUR-Warehouse Store 我

SQL Server Column Store Indeses

SQL Server Column Store Indeses SQL Server Column Store Indeses. 1 1. 概述... 1 2. 索引存储... 2 2.1 列式索引存储... 2 2.2 数据编码和压缩... 3 2.2.1 编码... 3 2.2.2 优化行顺序... 4 2.2.3 压缩... 4 2.3 I/O和Cache. 4 3 查询处理和优化... 4 3.1 查询处理加强... 4 3.2 查询优化 1. 概述 SQL Server 11增加了新特

Oracle 12.1.0.2 New Feature翻译学习【In-Memory column store内存列存储】【原创】

翻译没有追求信达雅,不是为了学英语翻译,是为了快速了解新特性,如有语义理解错误可以指正.欢迎加微信12735770或QQ12735770探讨oracle技术问题:) In-Memory Column Store内存列存储 Starting in Oracle Database 12c Release 1 (12.1.0.2), the In-Memory Column Store (IM column store) is an optional, static SGA pool that sto