种树
似乎又想到3紫1黑
其实是两道不相关的题目,区间选点问题,给了我们O(N2)的复杂度,那就很好确定了,我们可以考虑尽量让一棵树发挥最大价值,放在尾部,直到满足要求为止。
具体实现
- 用右端点递增排序
- 将不够的树补在尾部
- 直到补满
Code
#include<bits/stdc++.h> using namespace std; int b[30005],h,ans,n; struct node{int s,t,f;}a[5001]; bool cmp(node a,node b){return a.t<b.t;} int main(){ scanf("%d%d",&h,&n); for(int i=1;i<=n;i++) scanf("%d %d %d",&a[i].s,&a[i].t,&a[i].f);//输入 sort(a+1,a+n+1,cmp);//按照右端点排序 for(int i=1;i<=n;i++){ int sum=0; for(int j=a[i].s;j<=a[i].t;++j)sum+=b[j];//算出已经种了多少树 if(sum>=a[i].f)continue;//如果超过需求就跳过 sum=a[i].f-sum;//剩余量 for(int j=a[i].t;j>=a[i].s,sum;--j,--sum){//种在尾部 while(b[j])--j;b[j]=1;++ans;//种了一棵树 } } cout<<ans<<endl; }
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 源码浅析:SpringBoot main方法结束为什么程序不停止
· C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
· 本可避免的P1事故:Nginx变更导致网关请求均响应400
· 还在手写JSON调教大模型?.NET 9有新玩法
· 复杂业务系统线上问题排查过程
· AI 的力量,开发者的翅膀:欢迎使用字节旗下的 AI 原生开发工具 TRAE
· 「闲聊文」准大三的我,思前想后还是不搞java了
· .NET 9 的免费午餐:GZip 性能提升38.3%
· 2025年:是时候重新认识System.Text.Json了
· 开源新旗舰 GLM-4.5:不想刷榜,只想干活儿