news 2026/6/10 17:28:19

USACO历年青铜组真题解析 | 2023年12月Farmer John Actually Farms

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
USACO历年青铜组真题解析 | 2023年12月Farmer John Actually Farms

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总贴:USACO历年青铜组真题解析 | 汇总-CSDN博客


【题目来源】

洛谷:[P9976 USACO23DEC] Farmer John Actually Farms B - 洛谷

【题目描述】

农夫约(FJ)在他的农场上种植了**N ( 1 ≤ N ≤ 2 ⋅ 10 5 ) N(1\le N\le 2\cdot 10^5)N(1N2105)株芦笋!但是一些植物有遗传差异,所以有些植物会比其他植物生长得更快。第i株植物的初始高度是h i h_ihi英寸,每天过后,第i ii株植物会生长a i a_iai**英寸。

FJ会更偏爱某些植物,他希望某些特定的植物比其他植物要高。他给了你一个数组**t 1 , … t N t_1,\dots t_Nt1,tN,包含了从0 00N − 1 N-1N1的所有不同整数值,并且他希望对于第i ii株植物,有t i t_iti**株植物的高度比它高。找出满足FJ要求的最少天数,或者确定这是不可能的。

【输入】

每个测试用例包含T TT个子测试用例。输入的第一行包含整数**T ( 1 ≤ T ≤ 10 ) T(1\le T\le 10)T(1T10)**。以下是T TT个子测试用例。

每个子测试用例的第一行包含一个整数N NN

第二行由N NN个整数**h i ( 1 ≤ h i ≤ 10 9 ) h_i(1\le h_i\le 10^9)hi(1hi109)**组成,表示第i ii株芦笋的初始高度。

第二行由N NN个整数**a i ( 1 ≤ a i ≤ 10 9 ) a_i(1\le a_i\le 10^9)ai(1ai109)**组成,表示每天第i ii株芦笋的生长高度。

第四行包括N NN个不同整数**t i t_iti**,这是FJ给你提供的数组。

保证所有测试用例中N的总和不超过**2 ⋅ 10 5 2\cdot 10^52105**。

【输出】

输出T TT行,每行表示对应测试用例的答案。如果无法实现,则输出− 1 -11

注意这个问题涉及到的整数可能需要使用**64 6464**位整数型(例如,C/C++中的 “long long”)。

【输入样例】

6 1 10 1 0 2 7 3 8 10 1 0 2 3 6 10 8 0 1 2 7 3 8 9 1 0 2 7 7 8 8 0 1 2 7 3 8 8 1 0

【输出样例】

0 3 2 5 -1 -1

【算法标签】

《洛谷 P9976 Farmer John Actually Farms》 #数学# #USACO# #O2优化# #2023#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;intT,n;structnode{longlongh,a,t;}p[200005];boolcmp(node x,node y){returnx.t<y.t;}intmain(){cin>>T;// 输入Twhile(T--){// 遍历T次询问cin>>n;// 输入nfor(inti=1;i<=n;i++)cin>>p[i].h;// 使用结构体数组,记录每个植物的h、a和tfor(inti=1;i<=n;i++)cin>>p[i].a;for(inti=1;i<=n;i++)cin>>p[i].t;if(n==1){// 如果n==1特判,输出0cout<<0<<endl;continue;}intminn=1e9,maxn=-1e9;// 定义满足条件的最大值和最小值sort(p+1,p+n+1,cmp);// 按照t从小到大方式排序intmark=0;// 定义标记位for(inti=1;i<n;i++){// 遍历n-1个植物inta=p[i].h,b=p[i].a,c=p[i+1].h,d=p[i+1].a;// 定义变量简化代码长度if(b==d){// 当b==d时if(a<=c){// 如果a小于等于c,永远无法追上,输出-1cout<<-1<<endl;mark=1;break;}else{// 否则,只需0天就可以满足maxn=max(maxn,0);}}if(b>d){// 当b>d时if(a<=c){// 如果a小于等于c,则在某天之后就一直超越intx=(c-a)/(b-d)+1;// 相减后相除的结果是相等的情况,还需要再加1maxn=max(maxn,x);}else{// 否则,只需0天就可以满足maxn=max(maxn,0);}}if(b<d){// 当b<d时if(a<=c){// 如果a小于等于c,永远无法追上,输出-1cout<<-1<<endl;mark=1;break;}else{intx=(a-c-1)/(d-b);// 否则开始超越,但到某天后就不再满足maxn=max(maxn,0);minn=min(minn,x);// 记录该minn}}}if(mark==1)continue;if(maxn>minn){// 要求maxn>minn,即满足条件maxn < x < minn,才有结果输出,否则输出-1cout<<-1<<endl;continue;}else{cout<<maxn<<endl;}}return0;}

【运行结果】

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

PingFangSC字体包:解决跨平台字体显示难题的完整方案

PingFangSC字体包&#xff1a;解决跨平台字体显示难题的完整方案 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件&#xff0c;包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 还在为不同设备上网页字体显示效果天差地…

作者头像 李华
网站建设 2026/5/29 7:32:14

基于Xilinx平台的Vitis安装工控适配教程

如何让Vitis在工控机上“安家落户”&#xff1f;——Xilinx嵌入式开发环境部署实战最近接手一个工业PLC升级项目&#xff0c;客户现场的工控机要跑Zynq-7000平台的控制程序。本以为就是常规操作&#xff1a;装个Vitis、搭个工程、烧录调试走人。结果现实给了我当头一棒——Viti…

作者头像 李华
网站建设 2026/6/10 0:45:19

PingFangSC字体包:跨平台中文网页字体终极解决方案

PingFangSC字体包&#xff1a;跨平台中文网页字体终极解决方案 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件&#xff0c;包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 还在为不同设备上中文字体显示效果不一致而…

作者头像 李华
网站建设 2026/5/26 13:41:40

单细胞数据分析实战突破:从数据到洞察的完整解决方案

单细胞数据分析实战突破&#xff1a;从数据到洞察的完整解决方案 【免费下载链接】single-cell-best-practices https://www.sc-best-practices.org 项目地址: https://gitcode.com/gh_mirrors/si/single-cell-best-practices 你是否曾经面对单细胞测序数据感到无从下手…

作者头像 李华
网站建设 2026/6/5 14:48:15

StructBERT零样本分类教程:工单自动分类系统部署实战

StructBERT零样本分类教程&#xff1a;工单自动分类系统部署实战 1. 引言&#xff1a;AI 万能分类器的崛起 在企业级服务场景中&#xff0c;工单系统每天可能收到成千上万条用户反馈&#xff0c;涵盖咨询、投诉、建议、故障报修等多种类型。传统文本分类依赖大量标注数据和模…

作者头像 李华