清明講過一道類似的,難度略大的:P3545 [POI2012]HUR-Warehouse Store

兩道題類似,都是暫時先把前面的加進候選集合里,如果超出限制的話就拿現在這個和前面的交換,

相當於不選前面那個選當前這個,應該是比較好的思想

這道題還有一個就是如果最優解要你走到那個點,那麼中間的路程是不可省略的,所以貪心時大可不考慮

反正實質上是個dp,取的是最大值

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=;
ll n,m,cnt,sum,ans,tmp;
struct node{
ll x,t;
}a[maxn];
bool cmp(node a,node b){return a.x<b.x;}
int main(){
scanf("%lld%lld",&n,&m);
for(int i=;i<=n;i++){
ll x,t;scanf("%lld%lld",&x,&t);
if(x<=m && t<=m)
a[++cnt].x=x,a[cnt].t=t;
}
sort(a+,a++cnt,cmp);
priority_queue<ll>q;
for(int i=;i<=cnt;i++){
sum+=a[i].t+a[i].x-a[i-].x;//先選上這次的
q.push(a[i].t);
tmp++;
while(sum>m){//要超過時限就替換最大的
sum-=q.top();q.pop();
tmp--;
}
ans=max(ans,tmp);//根本上是个dp,取f[1]~f[n]最大值
}
printf("%lld",ans);
}

另一題的代碼

//by jackpei
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#define ll long long
using namespace std;
const int maxn=;
struct node{
int val,t;
node(int vv,int tt){
val=vv,t=tt;
}
bool operator <(const node &b)const{
return val<b.val;
}
}; priority_queue<node>pq;
int n,a[maxn],b[maxn],vis[maxn];
ll res;
int ans;
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=;i<=n;i++)scanf("%d",&b[i]);
for(int i=;i<=n;i++){
res+=(a[i]-b[i]),vis[i]=,++ans;
pq.push(node(b[i],i));
while(res<)
res+=pq.top().val,vis[pq.top().t]=,pq.pop(),ans--;
}
printf("%d\n",ans);
for(int i=;i<=n;i++)
if(vis[i])printf("%d ",i);
}

[題解](貪心/堆)luogu_P2107小Z的AK計劃的更多相关文章

  1. 【P2107】小Z的AK计划(优先队列+贪心)

    水一发优先队列的水题.. 这个题貌似以前有做过类似的.具体的方法是用大根堆辅助贪心算法得出正解.可以看出来,如果小Z走到了某个地方,那么他最远一定是到了这里,不可能有再走回来这种操作,因为很明显那样不 ...

  2. luogu P2107 小Z的AK计划

    最近复习了一下堆,于是去luogu上找一些简单题写一写 贪心的想,小z不会到一半以后回头去Ak,因为这样从时间上想肯定是不优的,他可以早在之间经过时就AK所以我们可以将所有机房按照横坐标排序可以想到的 ...

  3. Luogu P2107 小Z的AK计划 堆贪心

    好久不做这种题了... 存一下每个点的位置和时间,由于达到某个位置跟之前去哪里AK的无关,所以在时间超限后,可以用大根堆弹掉之前消耗时间最大的,来更新答案,相当于去掉之前花费最大的,直到时间不在超限. ...

  4. [洛谷P2107] 小Z的AK计划

    题目类型:贪心,堆 传送门:>Here< 题意:给出\(N\)个房间,每个房间距离起点的距离为\(x[i]\),每个房间可以选择进去和不进去,如果进去了那么要\(t[i]\)秒后才能出来. ...

  5. [Luogu]小Z的AK计划

    Description Luogu2107 Solution 一开始打了一个60分的暴力DP,结果一分都没得--本地调了好久才发现是没开long long. 由于我的DP方程没有任何性质,就是一个01 ...

  6. 洛谷P2107 【小Z的AK计划】

    #include<iostream> #include<queue> #include<algorithm> using namespace std; struct ...

  7. 小Z爱划水(NOIP信(sang)心(bin)赛)From FallDream

    题目: 小Z在机房.他和其它机房同学都面临一个艰难的抉择,那就是 要不要划水? 每个人都有自己的一个意见,有的人想做题,有的人想划水. 当然,每个人只能选择一个事情做.如果一个人做的事情和他想做的不同 ...

  8. 小Z爱图论(NOIP信(sang)心(bin)赛)From FallDream

    题目: 小Z最近喜欢上了图论,于是他研究了一下图的连通性问题.但是他遇到了一个难题. 给定一个n个点的有向图,求有多少点对(i,j)满足从i点出发能到达点j ? 小Z仅会简单的朴素算法,所以他想问问你 ...

  9. [題解]luogu_P1120小木棍(搜索)

    好久以前抄的題解,現在重新抄題解做一下 1.對所有木棍從大到小排序,後用小的比較靈活 2.限制加入的木棍單調遞減,因為先/后用長/短木棍等價,反正就是那兩根 3.預處理出重複木棍的位置,防止重複搜索相 ...

随机推荐

  1. 利用AutoLayout适配滚动视图和表视图

    1.新增一个contentView,设置为与滑动视图的父视图等高等宽. 2.利用代码 if(_MyTestTableView.frame.size.height != _MyTestTableView ...

  2. hadoop学习之旅2

    集群搭建文档1.0版本 1. 集群规划 所有需要用到的软件: 链接:http://pan.baidu.com/s/1jIlAz2Y 密码:kyxl 2.0 系统安装 2.1 主机名配置 vi /etc ...

  3. codeforces B. Convex Shape 解题报告

    题目链接:http://codeforces.com/problemset/problem/275/B 题目内容:给出一个n * m 大小的grid,上面只有 black 和 white 两种颜色填充 ...

  4. html5--5-16 综合实例绘制饼图

    html5--5-16 综合实例绘制饼图 实例 <!doctype html> <html> <head> <meta charset="utf-8 ...

  5. 盈创动力之 JS校验方法

    var IS_NULL = 128; // 10000000var IS_FULL = 64; // 01000000var IS_HALF = 32; // 00100000var IS_ASCII ...

  6. mongodb压缩——snappy、zlib块压缩,btree索引前缀压缩

    MongoDB 3.0 WiredTiger Compression and Performance One of the most exciting developments over the li ...

  7. java学习之super关键字

    对于具有public或者protected属性的父类,其子类若想继承父亲的属性或者方法,那么需要用到super 实例:

  8. nyoj 1030 hihocoder 1338

    题目链接1: 点这里打开. 题目链接2:   点击打开链接 思路:dp,dp[i][j] 表示某个人在区间 i,j上的得分. sum数组表示前 n 项和, num 数组用来存输入的数字. 因为取数字是 ...

  9. java中的异常The given object has a null identifier

    修改页面点击提交时报如下异常: org.hibernate.TransientObjectException: The given object has a null identifier: com. ...

  10. Spark Streaming之二:StreamingContext解析

    1.1 创建StreamingContext对象 1.1.1通过SparkContext创建 源码如下: def this(sparkContext: SparkContext, batchDurat ...