AcWing 蓝桥杯集训·每日一题2025

news/2025/2/26 6:15:40

题目链接 : 5437. 拐杖糖盛宴

题意: 有m个不同的糖果和n个不同高度的奶龙, 奶龙可以根据自己的身高去吃糖果,糖果垂直于地面,对于一个糖果都需要让每个奶龙尝试能否吃到,如果吃到则减去相应吃到的长度, 奶龙长高吃掉糖果的长度即可,根据长度进行判断, 分类讨论。

解题思路 :
根据糖果个数遍历, 外层遍历糖果, 内层遍历奶龙, 创建一个临时变量去记录每一层糖果目前已经吃掉的高度
如果 已经吃掉的糖果大于等于我们糖果的高度这代表糖果已经吃完, 我们更换下一个糖果, 如果当前奶龙的身高高于糖果的长度, 则比较,当前奶龙的身高能否够着现在糖果的高度 (1) 如果可以则当前奶龙身高加上他吃掉糖果的长度, 如果够不着则换下一个奶龙, 如果奶龙身高高于糖果的长度, 则奶龙吃掉目前糖果所剩所有长度

AC Code

// Problem: 拐杖糖盛宴
// Contest: AcWing
// URL: https://www.acwing.com/problem/content/description/5440/
// Memory Limit: 64 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<bits/stdc++.h>
typedef long long ll; // 确保 ll 在使用前被定义
using namespace std;
using i64 = long long;
#define f for(int i = 0; i < n;++i)
#define ff for(int i = 1; i <= n;++i)
#define int long long 
#define In ll n; std::cin >> n;

const int mod = 1e9 + 7, N = 1e7;

void solve(){
	int n, m ;std::cin >> n >> m;
	std::vector<int> a(n), b(m);
	f std::cin >> a[i];
	
	for(int i =  0 ; i < m; i++) std::cin >> b[i];
	
	for(int i = 0; i < m; i++) {
		int tmp = 0;
		for(int j = 0; j < n; j++) {
			if(tmp >= b[i]) {
				break;
			}
			if(a[j] <= b[i]) {
				if(a[j] > tmp) {
					int x = a[j];
					a[j] += (a[j] - tmp);
					tmp = std::max(tmp, x);
				} else continue;
			} else {
				a[j] += (b[i] - tmp);
				break;
			}
		}
	}
	
	f std::cout << a[i] << "\n";
}

signed main(){
	std::ios::sync_with_stdio(false);
	std::cin.tie(0); std::cout.tie(0);
	ll T = 1;
	//std::cin >> T;
	for(int i = 1; i <= T; ++i) solve();
}

Java

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String args[]) throws IOException{
        BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st=new StringTokenizer(bf.readLine());
        int n=Integer.parseInt(st.nextToken()),m=Integer.parseInt(st.nextToken());
        long a[]=new long[n];
        st=new StringTokenizer(bf.readLine());
        for(int j=0;j<n;j++){
            a[j]=Integer.parseInt(st.nextToken());
        }
        st=new StringTokenizer(bf.readLine());
        for(int j=0;j<m;j++){
            int b=Integer.parseInt(st.nextToken());
            if(b<=a[0]){
                a[0]+=b;
            }
            else{
                int low=0;
                for(int i=0;i<n;i++){
                    if(a[i]>=low){
                        long high=Math.min(a[i],b);//最高能吃到的高度
                        a[i]+=high-low;
                        low+=high-low;
                    }
                }
            }
        }
        for(long p:a){
            bw.write(p+"\n");
        }
        bw.flush();
    }
}

Python3

n,m=map(int,input().split())
a,b=list(map(int,input().split())),list(map(int,input().split()))

for i in range(0, m):
    tmp = 0
    for j in range(0, n):
        if tmp >= b[i]:
            break;
        if a[j] <= b[i]:
            if a[j] > tmp:
                x = a[j]
                a[j] += (a[j] - tmp)
                if x > tmp:
                    tmp = x
        else:
            a[j] += (b[i] - tmp)
            break
        

for i in range(0, n):
    print(a[i])

http://www.niftyadmin.cn/n/5868168.html

相关文章

Java包装类性能优化:深入解析Integer享元模式的源码实现

前言 在Java中&#xff0c;每一个基本类型都有对应的包装类。其中&#xff0c;Integer作为最常用的包装类之一&#xff0c;其内部实现巧妙地运用了享元模式&#xff08;Flyweight Pattern&#xff09;&#xff0c;通过对象缓存机制显著提升了性能。本文将深入剖析Integer类的享…

Java进阶学习笔记64——IO流

IO流&#xff1a; 输入输出流&#xff0c;就是读写数据的。 IO流的应用场景&#xff1a; 怎么去学习IO流&#xff1f; 1、先搞清楚IO流的分类、体系&#xff1f; 2、再挨个学习每个IO流的作用、用法。 IO流的分类&#xff1a; 按流的方向分为&#xff1a; 按流中数据的最小…

一文掌握python中正则表达式的各种使用

文章目录 1. 正则表达式基础1.1 常用元字符1.2 基本用法 2. 正则表达式高级功能2.1 分组捕获2.2 命名分组2.3 非贪婪匹配2.4 零宽断言2.5 编译正则表达式2.6 转义字符 3. 常见应用场景3.1 验证邮箱格式3.2 提取 URL3.3 提取日期3.4 提取HTML中的链接3.5 提取HTML中的图片链接3.…

排序趟数问题

1. 冒泡排序 趟数&#xff1a;最多 n-1 趟&#xff08;n为元素个数&#xff09;每趟操作&#xff1a;比较相邻元素&#xff0c;将最大元素“冒泡”到末尾。优化&#xff1a;若某趟无交换&#xff0c;可提前终止&#xff08;如数组已有序时仅需1趟&#xff09;。示例&#xff1…

如何获取zookeeper中的注册内容,在Java项目中演示

我来为你展示如何在Java项目中通过ZooKeeper获取已注册的内容。下面提供一个完整的示例&#xff0c;包括连接ZooKeeper、获取节点数据以及处理常见情况的代码。 示例代码 以下代码演示了如何从ZooKeeper中获取注册内容&#xff1a; import org.apache.zookeeper.*; import ja…

smolagents学习笔记系列(六)Secure code execution

这篇文章锁定官网教程 Secure code execution 章节的内容&#xff0c;主要介绍了smolagents是如何安全地执行LLM的输出结果。 官网链接&#xff1a;https://huggingface.co/docs/smolagents/v1.9.2/en/tutorials/secure_code_execution 为了不浪费你的时间&#xff0c;下面这…

JAVAweb之过滤器,监听器

文章目录 过滤器认识生命周期FilterConfigFilterChain过滤器执行顺序应用场景代码 监听器认识ServletContextListenerHttpSessionListenerServletRequestListener代码 过滤器 认识 Java web三大组件之一&#xff0c;与Servlet相似。过滤器是用来拦截请求的&#xff0c;而非处…

python绑定udp时使用127.0.0.1作为ip,无法sendto,报错Invalid argument

在 Python 中使用 UDP 套接字进行通信时&#xff0c;绑定127.0.0.1作为 IP 地址后无法使用sendto方法发送数据&#xff0c;可能由多种原因导致 这里是其中一个原因&#xff1a; 127.0.0.1 是本地回环地址&#xff0c;只能用于本机内部的进程间通信&#xff0c; 如果你绑定到 …