AtCoder Beginner Contest 085 D Katana Thrower(贪心)

AtCoder Beginner Contest 167 F:Bracket Sequencing 贪心分析 首先我们知道,判一个字符串是否合法,肯定是判任意前缀 ( 的个数一定大于等于 ) 的个数 而多个字符串考虑什么样的字符串放在最左边比较好。 对于一个字符串对拼接有影响的括号一定是自己内部匹配后剩的括号,比如  )(()(  内部匹配一对,剩2个左括号,一个右括号。 显然字符串内部括号匹配完后,剩的都是“(”,且剩的左括号的最多,这样的字符串放在最左边。比如()()((  剩2个左括号 同理,最右边一定是,剩的右括号最多的字符串。 依照最左最右,我们往中间放。 首先左括号剩的多的肯定尽量放左边,右括号剩的多的尽量放右边。 然后考虑次左应该放什么最优。 先把左括号剩的多的在左边安排好: 由于最左边 立即下载

Problem Statement

You are going out for a walk, when you suddenly encounter a monster. Fortunately, you have N katana (swords), Katana 1, Katana 2, …, Katana N, and can perform the following two kinds of attacks in any order:

Wield one of the katana you have. When you wield Katana ii (1≤i≤n), the monster receives aiai points of damage. The same katana can be wielded any number of times.

Throw one of the katana you have. When you throw Katana ii (1≤i≤N) at the monster, it receives bibi points of damage, and you lose the katana. That is, you can no longer wield or throw that katana.

The monster will vanish when the total damage it has received is H points or more. At least how many attacks do you need in order to vanish it in total?
Constraints

1 ≤ N≤ 1055
1 ≤ H ≤ 1099
1 ≤ aii ≤ bii ≤ 1099
All input values are integers.

题意:你有N把剑,怪兽血量H,第i把剑能挥砍造成aiai点伤害或投掷造成bibi点伤害(投掷后不能再用),问最少攻击多少次把怪兽打死?
思路:把投掷伤害高的剑扔出去,用挥砍攻击最高的反复砍

#include<iostream>
#include <algorithm>
using namespace std;

int n, h;
#define maxn 100000
class sword {
public:
    //挥砍攻击力
    int a;
    //投掷攻击力
    int b;
    bool operator<(sword& as) {
        return b < as.b;
    }
}s[maxn+5];

int main() {
    int maxa = 0;
    int dmg=0;
    int att=0;

    cin>>n>>h;
    for (int i = 0; i < n; ++i) {
        cin>>s[i].a>>s[i].b;
    }

    //按投掷攻击力的大小排序(重载<运算符)
    sort(s, s + n);

    //找到挥砍攻击力最大的那把
    for (int i = 0; i < n; ++i) {
        maxa = s[maxa].a < s[i].a ? i : maxa;
    }
    //把投掷攻击力大于最大挥砍攻击力的剑从大到小依次扔出去
    for (int i = n - 1; dmg < h&&s[i].b> s[maxa].a;--i) {
        if (i == maxa)continue;//不能把最大挥砍攻击的剑扔了
        dmg += s[i].b; ++att;
    }

    //投掷攻击力更大的剑都扔出去了,剩下的伤害用最大挥砍攻击的剑完成
    //这里要注意,当砍到最后一下的时候,是可以把这把剑扔出去的
    if (dmg < h) {
        if (s[maxa].a > s[maxa].b) {
        //挥砍攻击力比投掷攻击力高,最后一下仍是挥砍攻击
            att +=  (h - dmg) / s[maxa].a;
            //向上取整
            if ((h - dmg) % s[maxa].a != 0) 
                ++att;

        }
        else {//挥砍攻击力比投掷攻击力低,最后一下可以投掷攻击
            //提前把投掷攻击的伤害算上
            att += 1; dmg += s[maxa].b;
            if (dmg < h) {
                att += (h - dmg) / s[maxa].a;
                //向上取整
                if ((h - dmg) % s[maxa].a != 0) 
                    ++att;
            }
        }
    }
    cout << att;
}

软件崩溃时Visual Studio中看不到有效的调用堆栈,使用Windbg动态调试去分析定位 当在Visual Studio中遇到软件崩溃且无法查看详细调用堆栈时,可以使用Windbg进行动态调试去分析定位问题。 阅读详情

相关推荐

ROS2多线程处理RTSP视频流避坑指南:OpenCV解码丢帧问题解决方案

本文针对ROS2中处理RTSP视频流时OpenCV解码丢帧的常见问题,提供了专业的解决方案。通过深入分析单线程模型的瓶颈,提出并详细拆解了基于生产者-消费者多线程模型的健壮实现方案,有效分离数据采集与处理,从而显著提升视频流的稳定性和流畅度。

weixin_29199873的博客 168

AtCoder Beginner Contest 085 最后一题

em....atcoder beginner的题是真的挺水,稍微有一点点难度就最后两题,感觉不能ak都不好意思说出来。还是做一下总结吧,下一次努力ak!!! Katana Thrower:https://abc085.contest.atcoder.jp/tasks/abc085_d 题目大意我翻译过来是:给你n个工具,任一个工具可以选择“扔掉”和“擦掉”两种方式中的一种,擦掉的话可以重复利用

RockyHOO1209的博客 421

工作:三菱PLC与伺服之CC-Link IE Field Network通讯应用

CC-LINK-IE

好记性不如烂笔头 2万+

AtCoder Beginner Contest 085 D Katana Thrower (贪心+计算机除法特性)

Problem Statement You are going out for a walk, when you suddenly encounter a monster. Fortunately, you have N katana (swords), Katana 1, Katana 2, …, Katana N, and can perform the following two kind

深海沧澜的博客 539

【软件使用】Calibre部分提参的实用技巧与常见问题解析

本文深入解析Calibre部分提参功能的实用技巧与常见问题,重点介绍hcell和xcell文件的配置方法、PEX命令的进阶使用技巧,以及时钟失真等典型问题的排查指南。通过精准控制寄生参数提取范围,显著提升复杂芯片设计的效率与准确性。

weixin_30836759的博客 117

【STM32CubeIDE入门】(一)工程创建&工程配置

​写在前面:如果是刚接触stm32cubeide的同学推荐与这一篇文章共同阅读,能够更加快速认识上手stm32cubeide。 1、打开stm32cubeide,选择好工作目录进入主界面后,点击创建工程。

涛涛子的博客 1万+

AtCoder Beginner Contest 085 D - Katana Thrower【贪心】

AtCoder Beginner Contest 085 D - Katana Thrower Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Statement You are going out for a walk, when you suddenly encounter a monster. F

nobleman 906

实战演练:基于Veristand Custom Device的硬件在环(HIL)数据流控制模块开发

本文详细介绍了基于Veristand Custom Device的硬件在环(HIL)数据流控制模块开发实战。通过LabVIEW环境配置、动态路由逻辑构建、实时处理核心开发及性能优化等关键步骤,帮助工程师快速掌握定制化HIL测试系统的开发技巧,提升测试效率与准确性。

weixin_29206669的博客 475

Atcoder C - Alchemist(贪心)

题目在这 -- 题目大意是有一个数列(调料)a1,a2,a3,.............an。 然后往锅里放,没放进两个 ,然后把这个数(调料)放到数列中去,依次进行。问最后的值最大是多少? 思路:当时想的也是贪心,想的是大数被/2比小数/2浪费的多。所以从小到大排个序就出来了,然后我一直考虑精度问题(题目压根没顾及精度。。),没敢直接相加/2,是先通分,最后再除。结果爆long l...

一身清贫怎敢入繁华 786

[LaTeX] 调整参考文献的格式(References),包括作者名缩写,行距,字体,引用顺序等等

在此记录我对LaTeX中参考文献references的尝试,主要涵盖如题几个方面。

the Blog of 等不到天亮丶等时光 4万+

Inception-Resnet-v1、Inception-Resnet-v2学习笔记(附Pytorch代码)_inception-resnet-v1 代码

Reduction-B模块:输入8*8*1792,输出8*8*1792.IR-B模块*10:输入17*17*896,输出17*17*896.IR-A模块*5:输入35*35*256,输出35*35*256.IR-A模块*5:输入35*35*384,输出35*35*256.IR-B模块*10:输入17*17*896,输出8*8*1792.IR-C模块*5:输入8*8*1792,输出8*8*1792.IR-C模块*5:输入8*8*1792,输出8*8*1792.

2401_89285791的博客 470

AtCoder - ABC 160 - DE(贪心)

有一个有 N 个点的无向图G,相邻两点间有一条边,在顶点 X, Y 之间加一条边,总共有 N 条边。对于k从 1 到 N,求出对于每个 k,图G中满足两点最短路径为 k 的整数对数。

m0_64172681的博客 411

【YOLOv8改进-注意力机制】BRA(bi-level routing attention ):双层路由注意力

【YOLOv8改进-注意力机制】BRA(bi-level routing attention ):双层路由注意力我们提出了一种新颖的动态稀疏注意力机制,通过双层路由实现更加灵活且具有内容感知的计算分配。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 3169

AtCoder - ABC 267 - E(二分/贪心)

给定一个有 n 个点 m 条边无向图,每个点都有权值。每次要删除一个点及其所连的所有边,删除某点的代价是与这个点直接相邻的所有点的权值和,使 n 次删除操作后的最大值最小,求其最小值。

m0_64172681的博客 689

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

AtCoder - ABC 161 - E(贪心)

给你一个长度为 n 的字符串 s(仅由 ’x’ 和 ’o’ 组成),表示n天的上班状态,’o’ 表示该天上班;’x’ 表示不上班。要求总共上班 k 天,且两相邻上班时间之间至少隔 c 天。输出无论怎么选一定要选的位置。

m0_64172681的博客 422

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

贪心(AtCoder 189 C,CodeForces - 1328C)

AtCoder 189 C 题意: 给你一个长度小于1e4的正数组成的数组,从中选一个长为a的连续区间,满足这个区间的每一个数都大于等于b,求a∗ba*ba∗b的最大值,其中a和b你可以任意选定 思路: 贪心,最优解一定满足 b为这个最优区间的最小值(反证法: 如果b比最优区间的最小值还大的话,最优区间就不是它了,b比最优区间的最小值还小的话,就不是最优解了) 这个最优区间左端点左边的值要么不存在,要么比b小,同样右端点右边的值要么不存在,要么比b小(反证法: 否则最优区间还可以变大,与题意不符) 结论

人工智能方向,计算机视觉(https://github.com/chenshunpeng) 405

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Atcoder_abc226G-贪心好题

传送门 官方题解 首先看那些“不能放2个”的,即重量为3~5的。从贪心角度感性地看,倒序决策是合理的。 因为我们希望空间利用率为100%,所以对于重量为4和5的物品,都是按照升序依次处理即可。但对于重量为3的物品,则不能按照升序依次处理,因为会wa。那么应该按照什么顺序呢? 我们先分析只剩重量为1和2的物品的情况,再回答以上问题。显然,重量为1的物品的空间利用率总是100%,因此关键是计算当前能容纳的重量为2的物品数: LL num = 0; rep(i,2,5) num += (i/2)*b[i]; 如

hans774882968的博客 749

【AtCoder】AtCoder Beginner Contest 432 ABCDE (贪心 | 贪心 | 数学 | 模拟 + 并查集 | 分类讨论 + 数据结构)

对于 r <= A <= l 的情况,min(r,A) = r,那么 max(l, min(r,A)) 就等于 max(l,r) = l。对于 l <= A <= r 的情况,min(r,A) = A,那么 max(l, min(r,A)) 就等于 max(l,A) = A。对于 A < l 的情况,min(r,A) = A,那么 max(l, min(r,A)) 就等于 max(l,A) = l。设分给小朋友的小糖果数为 a,大糖果数为 b,总价值为 W,那么就有以下等式。

qq_61422664的博客 859

2018.07.12 atcoder Go Home(贪心)

传送门 题意简述:大家在数轴上生活,公司在 s。 班车送所有人回家,有 n 个住处,第 i 个位置在 xi,居住了 pi 的人。 保证 xi 互不相同。 大家⼀起投票向前还是向后,如果票数相同就固定向数轴负方向,每个⼈是自私的,希望自己尽早回家。 (但是注意,虽然是自私的,并不⼀定投自己家的方向) 到家了必须下车(因为自私) 问大家都做...

weixin_30552635的博客 202

AtCoder Beginner Contest 103 D(贪心)

AtCoder Beginner Contest 103 D 题目大意:n个点,除第n个点外第i与第i+1个点有一条边,给定m个a[i],b[i],求最少去掉几条边能使所有a[i],b[i]不相连. 按右端点从小到大排序,如果当前选的去掉的边在区间内,那么符合条件,否则ans++,并贪心地把去掉的边指向右端点,因为前面的区间都满足条件了,所以要去掉的边要尽量向右移使其满足更多的区间。...

bannaiting9193的博客 234

(AtCoder Regular Contest 128)A(贪心)

A 思路:最终获得的金子重量为x*ai/aj (i<j),只要保证ai/aj最大即可。可以确定左边界ai的值,然后寻找后面aj的最小值,eg:n = 5,序列5 4 3 2 1,标记为1 0 0 0 1最合适。 (1)寻找相邻非增序处找到最大的位置,并标记(注意这里一定要成对,所以要判断是不是最后一个) (2)在(1)中确定了最大值,这里只要向后寻找最小值即可,寻找相邻非递减位置,并和(1)配对标记 参考文章 代码: #include <bits/stdc++.h> using names

积少成多,水滴石穿 227

AtCoder practice contest B 归并排序 + 二分 / 贪心 + 信息熵

对于 $n = 26$ 的情况,归并排序最坏情况下需要 $99$ 次比较。对于 $n=5$ 的情况,比较 $c_1,c_2$,再比较 $c_3,c_4$,接着比较两组数据的最小者(不妨假设为 $c_1$),此时得到了一个有序的三元组 $c_1,c_3,c_4$,二分求解 $c_5$ 的位置并插入,此时 $c_1$ 右侧的元素至多为 $3$,再次二分插入 $c_2$ 即可。由于插入一个有序三元组需要二分比较的次数为 $2$,故总比较次数 $3+2+2=7$ 满足条件。

neweryyy的博客 480

AtCoder题解 —— AtCoder Beginner Contest 187 —— D - Choose Me —— 贪心

题目相关 题目链接 AtCoder Beginner Contest 187 D 题,https://atcoder.jp/contests/abc187/tasks/abc187_d。 Problem Statement AtCoder City will hold a mayoral election. The candidates are Aoki and Takahashi. The city consists of NNN towns, the iii-th of which has AiA_iA

努力中的老周的专栏 774

AtCoder Beginner Contest 167 F. Bracket Sequencing(贪心 比较法 2022WF H题同款)

这个等价于a.se+b.fi>b.se+a.fi,即a.se-a.fi>b.se-b.fi。当min(a.fi,a.se+b.fi)>min(b.fi,b.se+a.fi),a在前。先选x>0 y>0的,选完之后选x<0 y>0的,先选x绝对值小的后大的,然后选x<0 y<0的,顺序不太显然,但是可以考虑比较法决定哪个在前,然后按这个排序一下就过了,其实打开min符号的话,可以发现是良序的,考虑第二个串和第三个串的顺序时,手玩发现,一个单独的串里的前缀最小值x,前缀和为y。前缀和-前缀最小值大的在前面。

小衣同学的博客 326

贪心算法专题

反悔贪心的精髓就是,对于当前的最优解直接记录它对答案的贡献,而后续遇到更优解时只需要更新上一次最优解(因为堆自动排序了,所以更新只需要在O(1)的时间复杂度内完成)。毫无疑问,O(n²)的时间复杂度对于n

Antonio915的博客 1229

[AtCoder Educational DP Contest] X - Tower(贪心 + dp)

梦回初学贪心编程社排队的奇奇怪怪排序了

760
上一篇: Codeforces 907A Masha and Bears
下一篇: codeforces 913 c Party Lemonade(贪心+DP)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值