您的位置:首页 > 财经 > 金融 > 优化大师软件下载_西安网站优化招聘_广州seo外包公司_新手运营从哪开始学

优化大师软件下载_西安网站优化招聘_广州seo外包公司_新手运营从哪开始学

2025/2/28 21:19:24 来源:https://blog.csdn.net/2303_79299383/article/details/145857440  浏览:    关键词:优化大师软件下载_西安网站优化招聘_广州seo外包公司_新手运营从哪开始学
优化大师软件下载_西安网站优化招聘_广州seo外包公司_新手运营从哪开始学

题目链接 : 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 = 0for 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 = xelse:a[j] += (b[i] - tmp)breakfor i in range(0, n):print(a[i])