洛谷题单指南-贪心-P3817 小A的糖果
原题链接:https://www.luogu.com.cn/problem/P3817
题意分析:吃最少的糖果,保证相邻糖果数之和不大于x,需要某种贪心策略。
解题思路:
依次遍历相邻两盒糖果
如果糖果数之和大于x,必须要吃点一部分,使得糖果数之和刚好等于x
贪心策略是:优先吃后一盒糖果,因为这样可以更利于后续的判断成立
注意:
1、如果后一盒糖果不够吃,要继续吃前一盒糖果
2、总数可能爆int,需要long long
100分代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int a[N];
int n, x;
long long ans;
int main()
{
cin >> n >> x;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 2; i <= n; i++)
{
if(a[i] + a[i-1] > x) //依次看两个数的和与x的关系
{
int t = a[i] + a[i-1] - x;
if(a[i] >= t) a[i] -= t; //优先从后一个数减
else a[i] = 0, a[i-1] -= (t - a[i]); //后一个数不够减再从前一个数减
ans += t;
}
}
cout << ans;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App