当前位置: 首页 > article >正文

CF 230A.Dragons(Java实现)

题目分析

        (桐老爷,泪目)题目讲很多字,其实就是打怪升级,初始战斗力>龙的战斗力就能击败龙并炼化经验增加战斗力,然后打下一条龙,如果打不过了就寄

思路分析

        首先我还是想到键值对,分别存储龙的战斗力和给的经验,一个n条龙,然后循环判断战斗力胜负,如果胜则+战斗力,并挑战下一条,负则结束战斗。但是这里忽略了一个点,题目说的是不限顺序所以需要从小到大的战斗力依次去挑战,因此我在外面套了一个list,用sort函数从小到大依次排列;其次示例中会出现重复的战斗力,因此字典的方式会重复键,导致部分存值失败,我一开始想的是在值里套入list去储存多个值,但是想到同一个战斗力的龙直接一起挑战,即值=旧值+新值,所以我用merge函数直接在存储的时候更新省了不少麻烦

代码

        


import java.util.*;

public class Main {

	public static void main(String[] args)  {
		Scanner sc = new Scanner(System.in);
		int s=sc.nextInt();//初始战斗力
		int n=sc.nextInt();//总共龙的个数
		sc.nextLine();
		HashMap<Integer,Integer> map=new HashMap<>();//龙的战斗力和经验对应
		String re="YES";//初始化答案
		for (int i=0;i<n;i++){
			map.merge(sc.nextInt(), sc.nextInt(),Integer::sum);//存入map,三个参数分别代表,键,初始化值,更新值求和
			sc.nextLine();//吞回车
		}
		ArrayList<Map.Entry<Integer,Integer>> list=new ArrayList<>(map.entrySet());//套list
		list.sort((entry1,entry2)-> entry1.getKey()-entry2.getKey());//list的排序,里面用lambda函数表示从小到大
		for (int i=0;i<list.size();i++){//遍历list,此时需要注意不能用n,一旦有键相同的值就会溢出
			if (s>list.get(i).getKey()){//战斗力获胜
				s+= list.get(i).getValue();//加战斗力
			}else {
				re="NO";//失败就结束
				break;
			}
		}
		System.out.println(re);
	}
}

        感谢您能够看到这里,一起见证小何同学的算法学习,如果您有不同的见解,希望能得到您的指点和点悟;如果您是和我一样的同学,也希望这篇文章能对您有所帮助。


http://www.kler.cn/a/504993.html

相关文章:

  • (详细)Springboot 整合动态多数据源 这里有mysql(分为master 和 slave) 和oracle,根据不同路径适配不同数据源
  • flink写parquet解决timestamp时间格式字段问题
  • 【leetcode100】从前序与中序遍历序列构造二叉树
  • 【ComfyUI专栏】ComfyUI 部署Kolors
  • C语言复习
  • 【数据结构】_以SLTPushBack(尾插)为例理解单链表的二级指针传参
  • Golang——GPM调度器
  • uniapp实现“到这儿去”、拨打电话功能
  • 【鸿蒙Next】protobuf如何使用
  • [MySQL | 二、基本数据类型]
  • Scikit-Learn快速入门
  • nginx 配置ssl_dhparam好处及缺点
  • 怎样应对发现的小红书笔记详情API安全风险?
  • 心有花木,向阳而生:拥抱生活的无限可能
  • ADC(Analog-to-digital converter)模拟-数字转换器
  • c++领域展开第十二幕——类和对象(STL简介——简单了解STL)超详细!!!!
  • 易飞ERP 9.1 安装包 百度云盘 下载
  • iOS - 内存对齐
  • django基于 Python 的考研学习系统的设计与实现
  • 如何保证调用小红书的笔记详情API的安全性?
  • 【Linux】网络层
  • Python 异常捕获(详解)
  • 鸿蒙学习基础环境搭建、基本的语法、以及构建视图的基本语法(一)
  • flathub vscode
  • ASP.NET Core - 依赖注入(四)
  • 通过外部化 `config.properties` 文件更换数据库配置