2021.08.05 P7095 不离【扶咕咕出题】(贪心)

[P7095 yLOI2020] 不离 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题意:

游戏中人物有两个属性,我们分别称之为「力量」和「精神」,同时哔哔有 nn 件装备,穿戴第 ii 件装备需要人物在穿戴前的力量值不低于 a_i,精神值不低于 b_i。在穿戴第 i 件装备后,人物的力量值会增加 c_i,精神值会增加 d_i。

哔哔可以自由选择穿装备的顺序,只要满足力量和精神不低于对应值,就可以穿戴该装备。

现在,咕咕想知道,如果想让哔哔穿戴上所有的装备,那么人物的初始力量值(即没有穿任何装备之前的力量值)最小应该是多少?在初始力量值最小的前提下,初始精神值(即没有穿任何装备之前的精神值)最小应该是多少?

显然,初始力量和初始精神都应该是非负整数。

分析:

第一遍排序过后,当在i这件武器时,如果starta+c[1,2,…,i-1]<a[i],那么一定要更新starta,否则,加上c[i],因此得到starta。对于nowa,如果a[i]<=nowa,那么将这几件武器按照cmp2扔进优先队列中,每次取出队首b小的武器,按照更新starta和nowa的方法更新startb,nowb。

代码如下:

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std; const int N=1e5+10;
int t,n,starta,nowa,startb,nowb;
struct node{
int a,b,c,d;
}arm[N];
struct cmp2{
bool operator () (node a,node b){
return a.b>b.b;
}
};
priority_queue<node,vector<node>,cmp2>q; inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
int cmp1(node a,node b){
return a.a==b.a?a.b<b.b:a.a<b.a;
} int main(){
t=read();n=read();
for(int i=1;i<=n;i++){
arm[i].a=read();arm[i].b=read();
arm[i].c=read();arm[i].d=read();
}
sort(arm+1,arm+n+1,cmp1);
for(int i=1;i<=n;i++){
if(nowa<arm[i].a)starta+=(arm[i].a-nowa),nowa=arm[i].a;
if(nowa<=1e9)nowa+=arm[i].c;
}
cout<<starta<<" ";
nowa=starta;
int aim=0;
for(int i=1;i<=n;i++){
while(arm[aim+1].a<=nowa&&aim<n)++aim,q.push(arm[aim]);
node tmp=q.top();q.pop();
if(nowb<tmp.b)startb+=(tmp.b-nowb),nowb=tmp.b;
if(nowb<=1e9)nowb+=tmp.d;
if(nowa<=1e9)nowa+=tmp.c;
}
cout<<startb;
return 0;
}

2021.08.05 P7095 不离【扶咕咕出题】(贪心)的更多相关文章

  1. 2021.08.05 P1738 洛谷的文件夹(树形结构)

    2021.08.05 P1738 洛谷的文件夹(树形结构) P1738 洛谷的文件夹 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树!! 题意: 给出n个网页路径,求 ...

  2. 2021.08.05 P5357 康托展开模板(康托展开)

    2021.08.05 P5357 康托展开模板(康托展开) P5367 [模板]康托展开 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.康托展开 算法学习笔记(56): ...

  3. 2021.08.05 P2168 荷马史诗(哈夫曼树模板)

    2021.08.05 P2168 荷马史诗(哈夫曼树模板) [P2168 NOI2015] 荷马史诗 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.k叉哈夫曼树如果子结 ...

  4. 2021.08.05 P1340 兽径管理(最小生成树)

    2021.08.05 P1340 兽径管理(最小生成树) P1340 兽径管理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.离线化. 题意: 有n个点,m条边,每次加 ...

  5. http://www.blogjava.net/xylz/archive/2013/08/05/402405.html

    http://www.blogjava.net/xylz/archive/2013/08/05/402405.html

  6. http://tedhacker.top/2016/08/05/Spring%E7%BA%BF%E7%A8%8B%E6%B1%A0%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/

    http://tedhacker.top/2016/08/05/Spring%E7%BA%BF%E7%A8%8B%E6%B1%A0%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%9 ...

  7. LuoGu P4996 咕咕咕

    题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...

  8. To Do List | 事实上是咕咕咕计划

    1.写一两篇关于数学的博文 类似于这种反演啥的或者说是FFT一些更本质的东西趴...反正是我根本不会的东西 再写一点自己会的东西趴...(好像也只有什么课本上的东西讲讲了,不过应该会写一些自己曾经发现 ...

  9. 新手C#类、对象、字段、方法的学习2018.08.05

    类:具有相似属性和方法的对象的集合,如“人”是个类. 对象(实例):对象是具体的看得见摸得着的,如“张三”是“人”这个类的对象.(new Person()开辟了堆空间中,=开辟了栈空间,变量P存放在该 ...

随机推荐

  1. logging 日志模块 configparser 配置文件

    logging 模块 (copy博客) 详情浏览:http://www.cnblogs.com/linhaifeng/articles/6384466.html#_label12 函数式简单配置 im ...

  2. redis实战课题

    redis实战课题 本课题主要围绕用户登录时,直接到redis中查找用户的登录信息,密码验证.重置密码.查询所有用户.显示登录次数最多的前3位,最后通过(C# SQL)持久化到SQL Server 数 ...

  3. docker专题 从入门到放弃

    1.docker是什么 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚 ...

  4. BIO、NIO、AIO 有什么区别?

    BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低.NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 ...

  5. springboot 设定访问项目的根路径

    springboot的配置文件application.yml: spring.mvc.view.prefix : / spring.mvc.view.suffix : .html server: po ...

  6. Linux下离线安装docker与fastDFS

    一.Linux下离线安装Docker 基础环境 1.操作系统:CentOS 7 2.Docker版本:docker-19.03.9.tgz 官方下载地址(打不开可能需要科学-上网) 3.官方参考文档: ...

  7. Idea中使用Lombok 编译报找不到符号

    1.问题描述 项目中使用了lombok,但是在idea编译过程是出现找不到符号.报错如下图所示:   file @Data @ApiModel(value = "HeadTeacherVO& ...

  8. SVN之屏蔽不需要提交的xml等文件

    SVN之屏蔽不需要提交的xml等文件 在默认"Default changelist"中是我们正常需要提交的文件 在"不需要提交的文件"中存储的是一些线下环境需要 ...

  9. BMZCTF 2020祥云杯到点了

    2020祥云杯到点了 下载附件得到三个word文档,我们打开第一个文档然后将隐藏文字显示出来 得到提示 我们查看属性应该就是日期了我们先把他记录下来 然后打开第二个文档 输入刚刚的密码 在第二个wor ...

  10. Rust 中的数据布局--可选的数据布局

    Rust 允许你指定不同于默认的数据布局策略,并为你提供了不安全代码指南. repr(C) 这是最重要的"repr".它的意图相当简单:做 C 所做的事.字段的顺序.大小和对齐方式 ...