题目链接

题目描述

众所不知,LLM是一个红警3的高手,由于要出题所以好几天没有玩结果连简单的电脑都打不过了,因此LLM就可耻的开了外挂虐电脑,外挂的效果是这样的:
当LLM消灭一个属性为ai的单位时,他就能免费制造一个属性为bi的单位,如果他犹豫了一下(甚至可能手速慢了一点)就会错失良机,不能再免费制造它
为了简化这个问题,我们假设如果一个A属性和一个B属性的去同时打一个C属性的单位(A+B <=C)那么A和B会死亡,而C的属性会剩下C-A-B
现在假设LLM初始有一个属性为n的单位,由于其上司的吃喝嫖赌,欠了3.5个亿带着小姨子跑了(不懂什么梗请百度《浙江温州江南皮革场倒闭了》)所以LLM没有任何金钱,现在它要按顺序消灭m个敌人,为了磨练自己的技术,LLM希望自己制造的总单位数越少越好,请问LLM制造的单位数量最少是多少?
输入

每个测试文件包含不多于10组测试样例
每个测试样例第一行为n和m
接下来两行各m个数字第二行为ai,第三行为bi
1<=m<=50000
1<=ai,bi,n<=1000
输出

输出仅包含一行,为一个整数,代表最少需要制造的单位数量
如果LLM开外挂都无法打败敌人,输出-1
样例输入

2 2
1 1
10 10
2 3
1 10 1
1 10 10
样例输出

0
-1
提示

多组测试数据

来源

河南省多校脸萌第六场

非常不错的一道题,我以为最开始觉得是dp,n于sum(a)的差就是背包容量,然后拿最少的b,但是是按顺序打怪的,可以没拿后面的b时就已经打不过了当前的a,所以一直没做出来,还是自己太菜了

正确的姿势是把每次打到的a对应可以获得的b放到一个堆里面,然后碰到一个打不过的a时,就从堆里面拿b优先拿最大的,记录拿的个数,如果把堆里面的b拿完仍然打不过,就输出-1

代码如下:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
const int MAX = 50010;
int a[MAX],b[MAX];
int n,m;
int main(void){while(scanf("%d %d",&n,&m) != EOF){for(int i=1;i<=m;i++)scanf("%d",&a[i]);for(int i=1;i<=m;i++)scanf("%d",&b[i]);priority_queue<int,vector<int>,less<int> >q;int now = n,res = 0;//now代表当前的属性值 for(int i=1;i<=m;i++){while(now < a[i] && !q.empty()){//从堆里拿b int x = q.top();q.pop();now += x;res++;}if(now < a[i]){res = -1;break;}elsenow -= a[i];q.push(b[i]);}printf("%d\n",res);}return 0;
}

NYOJ 2355: 点兵点将 (脑洞题)相关推荐

  1. K13186 点兵点将2

    (注:此题选用C++写法,并非C语言写法.) 题目描述 又到了体育课,今天的体育课,科丁博士仍然会带大家做"点兵点将"的游戏:不过游戏规则有点变化,同样的老师会先给每位同学发一张卡 ...

  2. 洛谷P1119 灾后重建 图论 脑洞题

    洛谷P1119 灾后重建 图论   脑洞题   floyd    floyd中 k 的意义 通过前 k 个点 作为中间的节点 更新 i 到 j 的最短路 也就是 只经过前 k 个点 的最短路 帮助理解 ...

  3. python斐波那契螺旋线怎么画向日葵心,【脑洞题】飞蛾扑火曲线—— 斐波那契螺旋线...

    本帖最后由 sunemy 于 2017-12-3 22:56 编辑 此题源于最近看到的一篇文章,非喜直接看题目即可: [脑洞题]飞蛾扑火曲线:做递增角度为5度,长度为100的辐射线,覆盖360度,然后 ...

  4. 二维数组:K13185 点兵点将1

    题目描述 下节课又是令人开心的体育课,科科和丁丁可开心了,听说今天的体育课,科丁博士会带大家做"点兵点将"的游戏:首先老师会给每位同学发一张卡片,每张卡片上都有一个数字(数字不会超 ...

  5. 二维数组:K13187 点兵点将3

    题目描述 体育课又来啦,今天的体育课,科丁博士带大家做的是"点兵点将3.0":首先老师会给每位同学发一张卡片,每张卡片上都有一个数字(数字不会超过int的最大值),然后让大家按m行 ...

  6. 用Python实现点兵点将系统

    大家好,在某些难以抉择得时候,我们经常要用外力来帮助我们做出选择比如,梁山出征方腊前沙场点兵,挑选先锋的场景.这个时候,有一个随机点名系统就非常有帮助,本文将以此为例来构建一个点兵点将系统. 一.效果 ...

  7. Codeforces #353 (Div. 2)C 贪心脑洞题

    太弱了..还是笨.. 原题 这题脑洞题,说一下贪心思路. 首先我们注意到 如果连续一段和为0,其他部分耿直的转移,那么就能少移动一次(中间不考虑子段,只让这一段变成了0), 如果 这一段后面还有连续的 ...

  8. NYOJ 1009 So Easy[Ⅰ]【简单题】

    /* 题目大意:求三角形的外接圆 解题思路:c/sin(C)=2R,先求出cos,在求出sin 关键点:直接调用库 解题人:lingnichong 解题时间:2014-10-18 10:19:33 解 ...

  9. 狼人杀( 强连通 脑洞题)

    原题 : hdu 6370 题意 : n个人玩狼人杀,每个人会说另外一个人是狼还是村民,狼可以说假话,村民不行 求最后的只能是村民的数量,只能是狼的数量(不确定的不管) 解析 : 首先,每个人都可以是 ...

最新文章

  1. linux小脚本批量添加/删除用户
  2. 【Web安全】关于SQL Injection和盲注的探索(DVWA)
  3. 不同工作组能访问吗_“辣椒”的辣味从哪里来?有方法能测量不同辣椒的辣度吗?...
  4. oracle如何往dg加盘_oracle 在物理机上添加磁盘操作
  5. 计算机双语论文,计算机双语论文
  6. 在使用 Elasticsearch 时要注意什么?
  7. 【英语学习】【English L06】U03 House L6 Sharing an apartment
  8. hdfs中与file数组类似的数组_EXCEL中数组的应用专题之十二:行列数相同数组的运算...
  9. 苹果笔记本单独安装win10
  10. QQ群一键加群代码调用官方API
  11. Python-turtle库绘制蚊香、走动的时钟和数码管日期
  12. Spark on Yarn遇到的几个问题
  13. html游戏音乐,背景音乐的html标签
  14. 全行业产业链图示(摘自企查查)
  15. Proteus 数字示波器
  16. java实现网站的访问量_如何实现对网站页面访问量的统计(javaweb和php)
  17. 批量给excel表中的每行添加表头
  18. 贝叶斯公式和贝塔(beta)分布
  19. 分组密码算法CBC密文窃取模式(Ciphertext Stealing for CBC Mode)研究
  20. 如何用计算机做音乐,怎么制作音乐-手把手教你用废旧物品DIY音乐道具,超好玩!...

热门文章

  1. 微信小程序学习(四)路由页面配置
  2. 桌面地图2007版有哪些新的功能?
  3. 【解决问题】Vivado中FPGA的LUTs资源与数据手册对不上
  4. 金蝶ais账套文件数据库读取小工具,批量引出数据
  5. 微信群怎么引流?这八种方法效果最好!
  6. 如何提升自己的学习能力
  7. Python实战——斗图网爬虫
  8. LaTeX表格制作(表格内多行组合数据的输入)
  9. html如何插入视频qsv,爱奇艺视频qsv怎么转换成mp4?
  10. 消息队列——kafka基础