模拟赛的题目,做的时候由于第二题表打太久了,只剩下40分钟,想都没想就写了一个爆搜20分...

这道题单调性很关键,下面会解释

P.S.解释在代码里

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
inline int read(){
int ans=0,f=1;char chr=getchar();
while(!isdigit(chr)){if(chr=='-') f=-1;chr=getchar();}
while(isdigit(chr)) {ans=(ans<<3)+(ans<<1)+chr-48;chr=getchar();}
return ans*f;
}
inline void kai(){
freopen("cannon.in","r",stdin);
freopen("cannon.out","w",stdout);
}
const int maxn=250004;
struct data{
ll a,d;
bool operator <(const data &b)const{
return (a<b.a || (a==b.a && d<b.d));
}
}cnn[maxn],p[maxn];
ll k,h[maxn],ans=0;
int n,m,cnt=0;
map<ll,ll>f;
int main(){
n=read();m=read();k=read();
for(int i=n;i>=1;--i)h[i]=read();
for(int i=1;i<=m;++i)cnn[i].a=read(),cnn[i].d=read();
sort(cnn+1,cnn+1+m);
for(int i=1;i<=m;++i){
while(cnt && p[cnt].d<=cnn[i].d)--cnt;
p[++cnt]=cnn[i];
}//贪心删掉没有用的炮
/*
这里的贪心:如果一个炮打的低,能删掉的山的高度又小,那要它何用呢?
*/
ll dn=0;f[0]=0;
for(int i=1;i<=cnt;++i){
if(i!=1)dn=p[i-1].a;
ll l=max(dn,p[i].a-p[i].d);
for(ll j=l+1;j<=p[i].a;++j){
ll t=(j-dn-1)/p[i].d+1;
f[j]=f[max(0*1ll,j-(p[i].d*t))]+t;
}
}//处理出高度为x的山最少要删几次才行(类似于背包的做法?)
int j=1;
dn=0;
for(int i=1;i<=n;++i){
while(j<=cnt && p[j].a<h[i])++j;//第i座山用第j个炮,由于递增,可以一直下去
if(j>cnt)break;//如果当前山都处理不好,那么后面的山更不行 ,直接结束
if(j!=1)dn=p[j-1].a;
ll t=(h[i]-dn-1)/p[j].d+1;//因为单调性,可以直接用上一座山残留数据
ll q=f[max(0*1ll,h[i]-(p[j].d*t))]+t;//还是类似于背包
if(k>=q)k-=q,++ans;else break;//如果当前山加不进去,还是不行,结束
}
printf("%lld ",ans);
printf("%lld",k);
}

【贪心】小Y的炮[cannon]题解的更多相关文章

  1. 小Y的棋盘问题 题解

    有一个n*m的棋盘,上面有一些棋子,每行每列最多只会有一个棋子,不会有两个棋子八连通.问随机一个空格子作为起点,再随机地选择一个空格子作为终点,求问不经过任意棋子最短路的期望长度是多少.多组,n,m& ...

  2. 小Y的炮

    [存代码] #include<bits/stdc++.h> #define N 1000001 #define MAXN 100001 using namespace std; int n ...

  3. 【luoguP4006 清华集训2017】小Y和二叉树

    题目描述 小 Y 是一个心灵手巧的 OIer,她有许多二叉树模型. 小 Y 的二叉树模型中,每个结点都具有一个编号,小 Y 把她最喜欢的一个二叉树模型挂在了墙上,树根在最上面,左右子树分别在树根的左下 ...

  4. 【洛谷4005】小Y和地铁(搜索)

    [洛谷4005]小Y和地铁(搜索) 题面 洛谷 有点长. 题解 首先对于需要被链接的两个点,样例中间基本上把所有的情况都给出来了. 但是还缺了一种从下面绕道左边在从整个上面跨过去在从右边绕到下面来的情 ...

  5. P4005 小 Y 和地铁

    题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...

  6. BZOJ 1193 [HNOI2006]马步距离:大范围贪心 小范围暴搜

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1193 题意: 给定起点(px,py).终点(sx,sy).(x,y < 100000 ...

  7. B - 小Y上学记——小Y的玩偶

    B - 小Y上学记——小Y的玩偶 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  8. 【luogu P4007 清华集训2017】小Y和恐怖奴隶主

    题目背景 “A fight? Count me in!” 要打架了,算我一个. “Everyone, get in here!” 所有人,都过来! 题目描述 小 Y 是一个喜欢玩游戏的 OIer.一天 ...

  9. 【luogu P4005 清华集训2017】小Y和地铁

    题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...

随机推荐

  1. getdlgitemtext

    获取控件内信息 set 设置控件内信息 oninitdialog初始化控件时的操作

  2. CAD在网页中打印的图纸里面添加页眉及页脚

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  3. Django——2 路由分配设置 re_path正则匹配 include总路由 url传参 name使用 模板渲染render方法 模板渲染方法

    Django 路由分配设置 re_path正则匹配 include总路由设置 url额外参数的传递 name的使用 模板的渲染:render方法   路由的分配中, 可以设定相应的转换器加以约束,比如 ...

  4. noip模拟赛 站军姿

    分析:纯数学题.相离和包含关系的可以很容易算出来答案,相交的话要先求出两个圆的面积,然后减掉中间重叠的部分,这一部分并不能直接求出来,但是可以求出两个扇形的面积,和它们围成的一个四边形的面积,加加减减 ...

  5. [bzoj2743][HEOI2012]采花_树状数组

    采花 bzoj-2743 HEOI-2012 题目大意:给定n朵花,每朵花有一个种类,m次询问:一段区间中至少出现两朵花的种类的个数. 注释:$1\le n,m\le10^6$. 想法:这个题超级像H ...

  6. F2BPM 开发Api与RESTfull应用服务Api 层次关系及示例

    目前越来越多的企业架构解决方案更加趋向于基于http协议“微服务”访问跨系统调用,而不使用统传的WebService调用,即通过RESTfull方式进行交互,更加轻量整合调用更加方便.本文档中所有F2 ...

  7. PHP包管理工具composer简单总结

    前言 接触laravel之后,才知道有PSR,composer之类的东西,PHP已经不再是一门草根语言了.最近在尝试玩thrift,需要安装PHP thrift依赖库,使用composer insta ...

  8. 微信 创建自定义菜单 向微信发起的post请求

    微信 创建自定义菜单 向微信发起的post请求 Map<String, Object> res = new HashMap<String, Object>(); try { S ...

  9. 微信被动回复用户消息-文本消息-springmvc环境下自动生成xml

    微信被动回复用户消息-文本消息-springmvc环境下自动生成xml springmvc - 大牛! private Object subscribeMessage(Scan scan) { Sca ...

  10. PPAPI插件的全屏切换处理

    有时你会想让PPAPI插件全屏(比方播放视频时),这次来看看怎么做. PPAPI和CEF App两側都要处理. foruok原创,转载请注明出处.欢迎关注foruok的订阅号"程序视界&qu ...