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;
}

Python爬虫教程:爬取法院司法拍卖数据全流程实战(附反爬+数据分析方案) Python爬虫爬取法院司法拍卖数据的核心是模拟真人行为规避反爬+精准解析页面数据+合理处理数据。新手不用一开始就追求高级的反爬技巧和复杂的数据分析,先把基础的分页爬取和数据保存功能跑通,再逐步优化。我做的这个工具现在每周帮朋友爬取全国10个城市的法拍房数据,自动生成分析报告,他说这让他的投资决策效率提升了一倍。如果你们在开发过程中遇到问题,比如反爬失败、数据解析错误,都可以在评论区留言,我会尽力解答。后续我还会出一期爬取京东司法拍卖数据的教程,帮助大家获取更多的法拍数据来源。 阅读详情

相关推荐

RK3588上rknn_toolkit_lite2报错解决:手把手教你更新librknnrt.so的正确姿势

本文针对在RK3588平台上使用rknn_toolkit_lite2时遇到的“Invalid RKNN model version”等常见错误,提供了完整的诊断与解决方案。文章深入剖析了RKNN生态系统各组件(如librknnrt.so、RKNN Server)版本不兼容的根源,并手把手指导如何安全、正确地更新librknnrt.so运行时库,确保AI模型在RK3588 NPU上实现高效推理。

weixin_29189003的博客 520

AtCoder Beginner Contest 085 最后一题

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

RockyHOO1209的博客 421

MTK6769平台Type-C充电全解析:从硬件管脚到PD协议实战(Android15环境)

本文深入解析了MTK6769平台在Android 15环境下Type-C充电的完整链路。从硬件管脚(特别是核心的CC引脚)功能与连接,到USB-PD协议报文抓取与实战分析,并结合MTK平台PD芯片驱动与充电IC驱动的软件框架,提供了从硬件设计到软件调试的系统性解决方案和常见问题排查案例。

ol78901234的博客 311

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

深海沧澜的博客 540

GD32F303实战:用定时器4触发ADC2+DMA,实现10ms精准采样1024点的完整流程

本文详细介绍了在GD32F303微控制器上使用Timer4触发ADC2配合DMA传输,实现10ms精准采样1024点的完整方案。从硬件架构设计、时钟树配置到定时器参数计算,提供了完整的工程实现流程和常见问题排查方法,适用于工业传感器监测等高实时性场景。

weixin_29194693的博客 433

Linux磁盘扩容实战:用parted命令无损扩展/data分区(附常见报错解决方案)

本文详细介绍了在Linux生产环境中使用parted命令对已挂载的/data分区进行在线磁盘扩容的完整实战流程。通过风险评估、状态检查、parted工具深度解析及实战演练,指导用户安全完成动态扩容,并提供了常见报错如'Partition is being used'、MBR 2TB限制等的解决方案,确保业务不中断、数据不丢失。

weixin_29207439的博客 296

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

药物不良反应预测实战指南:从FAERS数据挖掘到PyTorch深度学习模型(含可解释性分析)

【代码】药物不良反应预测实战指南:从FAERS数据挖掘到PyTorch深度学习模型(含可解释性分析)

理论都是虚的,代码才是王道。 721

Atcoder C - Alchemist(贪心)

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

一身清贫怎敢入繁华 786

高质量文献综述原来这么写!借助Gemini 3 Pro+四步法,手把手教你写出有逻辑深度的综述

总结与展望先总结现状,说明前人已经做到什么地步了,再指出缺口,前人没解决什么问题、方法有什么局限等等,最后再在这个缺口的基础上,提出你的未来研究方向。当你有个复杂的研究题目,但没办法拆解出关键词,就可以让Gemini 3 Pro来辅助帮你拆解,并帮你写专业的检索式,若是找英文文献,还能帮你将中文关键词翻译成地道的专业术语。做文献笔记,可以建立文献笔记矩阵,可以用Excel建个表格,横向是文献,纵向是关键要素,包括作者/年份、研究问题/假设、理论框架/模型、研究方法/数据来源、核心结论、局限性/Gap。

智能AI让学术科研更容易 992

【知识分享】CAN总线中终端网络的重要性

P沟道和N沟道晶体管的漏源通态电阻匹配良好时,形成的CANH和CANL信号匹配良好;如果驱动器的一半具有比另一半低得多的导通状态电阻,那么总线共模电压将从VCC/2的显性状态偏离,并回到VCC/2的隐性状态,这将导致每一次状态转换都会伴随着共模电压噪声,从而导致更高水平的传导和辐射能量发射。

一只豌豆象的博客 1543

AtCoder - ABC 160 - DE(贪心)

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

m0_64172681的博客 411

MCP开发实战:基于openEuler系统MCP插件的开发、测试与发布全流程

MCP开发实战:基于openEuler系统MCP插件的开发、测试与发布全流程

jks212454的博客 555

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

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

m0_64172681的博客 689

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

AtCoder - ABC 161 - E(贪心)

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

m0_64172681的博客 422

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

贪心(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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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、付费专栏及课程。

余额充值