UVA 1153 - Keep the Customer Satisfied(贪心)

来源:互联网 发布:access 导入sqlserver 编辑:程序博客网 时间:2024/05/17 22:25

题目链接:点击打开链接

思路:

我们按照时间从小到大排序, 因为时间最大2e6, 所以从小到大枚举时间, 当一个订单到了最后期限, 我们就看看它能否满足, 如果能就满足它, 如果不能, 我们看一下之前满足的订单中货物最多的一个是否比当前这个大, 如果大,就拿它换当前这个, 为后面节省空间。  用优先队列可以很方便的维护。

细节参见代码:

#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <string>#include <vector>#include <stack>#include <ctime>#include <bitset>#include <cstdlib>#include <cmath>#include <set>#include <list>#include <deque>#include <map>#include <queue>#define Max(a,b) ((a)>(b)?(a):(b))#define Min(a,b) ((a)<(b)?(a):(b))using namespace std;typedef long long ll;typedef long double ld;const double eps = 1e-6;const double PI = acos(-1);const int mod = 1000000000 + 7;const int INF = 0x3f3f3f3f;const int seed = 131;const ll INF64 = ll(1e18);const int maxn = 1e6 + 10;int T,n,m;struct node {    int v, t;    node(int v=0, int t=0):v(v), t(t) {}    bool operator < (const node& rhs) const {        return t < rhs.t;    }}a[maxn];int main() {    scanf("%d",&T);    while(T--) {        scanf("%d", &n);        int maxt = 0;        priority_queue<int> q;        for(int i = 1; i <= n; i++) {            scanf("%d%d", &a[i].v, &a[i].t);            maxt = max(maxt, a[i].t);        }        int cnt = 1;        sort(a+1, a+n+1);        int cur = 0, ans = 0;        for(int i = 0; i <= maxt; i++) {            if(i) ++cur;            while(cnt <= n && a[cnt].t == i) {                if(cur >= a[cnt].v) {                    q.push(a[cnt].v);                    cur -= a[cnt].v;                    ++ans;                }                else if(!q.empty()) {                    int hehe = q.top();                    if(hehe > a[cnt].v) {                        q.pop();                        q.push(a[cnt].v);                        cur += (hehe - a[cnt].v);                    }                }                ++cnt;            }        }        printf("%d\n", ans);        if(T) printf("\n");    }    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 bt种子被和谐了怎么办 苹果手机id密码忘了怎么办 墙漆颜色太深了怎么办 油漆颜色太深了怎么办 墙面漆颜色太深怎么办 古代打仗牙掉了怎么办 乐视电视没声音怎么办 老公疑心病很重怎么办啊 被安装了尿道锁怎么办 狼青小狗腿罗圈怎么办 备孕期间有霉菌怎么办 虫子进皮肤里了怎么办 生完孩子肚子越来越大怎么办 怀孕8个月肚子小怎么办 孕晚期胎儿不长怎么办 肚子上肉特别多怎么办 奶堵了有硬块怎么办 便秘5天肚子胀怎么办 上火大便拉不出来怎么办 大便拉不出来肚子痛怎么办 戒奶奶涨有硬块怎么办 忌奶的时候涨奶怎么办 娃儿隔奶,,奶涨怎么办 狗肚子很大很鼓怎么办 注册不了的二建怎么办 专升本没考过怎么办 警察乱拘留人该怎么办 玩英雄联盟太卡怎么办 一方离婚证丢了怎么办 遭遇呼死你软件怎么办 开车遇见碰瓷的怎么办 遇到碰瓷老人的怎么办 睿强遥控锁坏了怎么办 地暖分水器坏了怎么办 京东赠品无货怎么办 图书馆的书丢了怎么办 三次临牌用完了怎么办 m3u8文件只有10k怎么办 寿县到淮南高铁怎么办 冰箱停电肉臭了怎么办 新买冰箱有异味怎么办