news 2026/6/24 1:48:31

算法竞赛备考冲刺必刷题(C++) | 洛谷 P1250 种树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法竞赛备考冲刺必刷题(C++) | 洛谷 P1250 种树

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

撸狗:P1250 种树 - 洛谷

【题目描述】

路边的地区被分割成块,并被编号成1 , 2 , … , n 1, 2, \ldots,n1,2,,n。每个部分为一个单位尺寸大小并最多可种一棵树。

每个居民都想在门前种些树,并指定了三个号码b bbe eet tt。这三个数表示该居民想在地区b bbe ee之间(包括b bbe ee)种至少t tt棵树。

居民们想种树的各自区域可以交叉。你的任务是求出能满足所有要求的最少的树的数量。

【输入】

输入的第一行是一个整数,代表区域的个数n nn

输入的第二行是一个整数,代表房子个数h hh

3 33到第( h + 2 ) (h + 2)(h+2)行,每行三个整数,第( i + 2 ) (i + 2)(i+2)行的整数依次为b i , e i , t i b_i, e_i, t_ibi,ei,ti,代表第i ii个居民想在b i b_ibie i e_iei之间种至少t i t_iti棵树。

【输出】

输出一行一个整数,代表最少的树木个数。

【输入样例】

9 4 1 4 2 4 6 2 8 9 2 3 5 2

【输出样例】

5

【算法标签】

《洛谷 P1250 种树》 #贪心# #排序# #差分约束#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=30005,M=N*3;// 最大顶点数和边数intn,m;// n: 范围[0,n], m: 区间约束数量inth[N],e[M],w[M],ne[M],idx;// 链式前向星存储图intdist[N];// 最长距离数组boolst[N];// 标记顶点是否在队列中/** * 添加有向边 * @param a 起点 * @param b 终点 * @param c 权重 */voidadd(inta,intb,intc){e[idx]=b;// 边指向的顶点w[idx]=c;// 边的权重ne[idx]=h[a];// 指向原链表头h[a]=idx++;// 更新头指针}/** * SPFA算法求最长路径 * 从顶点0开始,计算到所有顶点的最长路径 */voidspfa(){// 初始化距离为负无穷memset(dist,-0x3f,sizeof(dist));queue<int>q;// SPFA队列q.push(0);// 起点入队st[0]=true;// 标记在队列中dist[0]=0;// 起点距离为0while(!q.empty()){intt=q.front();// 取出队首q.pop();st[t]=false;// 标记不在队列中// 遍历t的所有邻接边for(inti=h[t];i!=-1;i=ne[i]){intj=e[i];// 邻接顶点// 松弛操作:求最长路径if(dist[j]<dist[t]+w[i]){dist[j]=dist[t]+w[i];// 更新最长距离// 如果j不在队列中,入队if(!st[j]){q.push(j);st[j]=true;}}}}}intmain(){// 输入n和区间约束数量mcin>>n>>m;// 初始化邻接表memset(h,-1,sizeof(h));// 添加基础约束边// 顶点编号0~n,共n+1个顶点for(inti=1;i<=n;i++){// 约束1: S_i ≥ S_{i-1}// 即: S_i - S_{i-1} ≥ 0// 建边: i-1 → i,权重0add(i-1,i,0);// 约束2: S_i - S_{i-1} ≤ 1// 即: S_{i-1} - S_i ≥ -1// 建边: i → i-1,权重-1add(i,i-1,-1);}// 添加区间约束for(inti=1;i<=m;i++){intb,e,t;cin>>b>>e>>t;// 约束: S_e - S_{b-1} ≥ t// 即: S_e ≥ S_{b-1} + t// 建边: b-1 → e,权重tadd(b-1,e,t);}// 执行SPFA算法求最长路径spfa();// 输出从0到n的最长路径长度cout<<dist[n]<<endl;return0;}

【运行结果】

9 4 1 4 2 4 6 2 8 9 2 3 5 2 5
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 16:12:34

Java Web 养老院管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着人口老龄化趋势的加剧&#xff0c;养老院的管理需求日益复杂化&#xff0c;传统的人工管理方式已无法满足高效、精准的服务要求。养老院管理系统通过信息化手段&#xff0c;能够有效提升管理效率、降低运营成本&#xff0c;并为老年人提供更优质的服务。该系统整合了入…

作者头像 李华
网站建设 2026/6/24 6:31:06

5种必知的前端数据加密防护技术:从React安全到浏览器原生方案

在现代前端开发中&#xff0c;数据安全防护已成为开发者必须掌握的硬核技能。随着单页面应用的普及&#xff0c;前端数据加密、React安全防护等技术需求日益凸显。本文将带你深入剖析前端安全威胁&#xff0c;对比不同技术方案&#xff0c;分享实战应用场景&#xff0c;并展望未…

作者头像 李华
网站建设 2026/6/23 13:53:14

面试必问:如何快速定位BUG?BUG定位技巧及N板斧!

01 定位问题的重要性 很多测试人员可能会说&#xff0c;我的职责就是找到bug&#xff0c;至于找原因并修复&#xff0c;那是开发的事情&#xff0c;关我什么事&#xff1f; 好&#xff0c;我的回答是&#xff0c;如果您只想做一个测试人员最基本最本分的事情&#xff0c;那么可…

作者头像 李华
网站建设 2026/6/23 8:19:00

Wan2.2-T2V-A14B如何生成带有烟花绽放效果的节日庆典视频?

如何用 Wan2.2-T2V-A14B 一键生成“烟花绽放”的节日庆典视频&#xff1f;✨&#x1f386; 你有没有遇到过这种情况——马上要发春节宣传视频了&#xff0c;团队还在熬夜剪辑烟花特效、调色、加人声欢呼&#xff0c;结果客户一句“氛围不够喜庆”就得全部重来&#xff1f;&…

作者头像 李华
网站建设 2026/6/21 17:30:41

【MCP PL-600核心技术突破】:3步搞定复杂场景下的多模态感知与响应

第一章&#xff1a;MCP PL-600多模态Agent架构概览MCP PL-600是一种面向复杂任务协同的多模态智能体架构&#xff0c;专为融合文本、图像、语音与结构化数据处理而设计。其核心在于统一感知层与动态决策引擎之间的高效协作&#xff0c;支持跨模态语义对齐与实时响应。架构核心组…

作者头像 李华