news 2026/4/23 9:53:21

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/4/23 13:02:53

深度推理赋能固件安全:DeepSeek-R1引领漏洞挖掘技术革新

在物联网设备与嵌入式系统全面普及的数字化时代&#xff0c;固件作为硬件设备的“灵魂”&#xff0c;其安全性直接决定了整个设备生态的防护底线。从Mirai病毒利用固件漏洞发起大规模DDoS攻击&#xff0c;到工业控制设备漏洞导致的生产中断&#xff0c;固件安全事件已造成严重的…

作者头像 李华
网站建设 2026/4/23 11:22:14

搭建一款属于自己的物联网平台

物联网平台 - Thinglinks-iot ## &#x1f31f; 项目简介 一个功能完备、高可扩展的物联网平台&#xff0c;提供完整的设备接入、管理和数据处理解决方案。支持多种网络协议&#xff0c;具备强大的消息解析和实时告警能力&#xff0c;帮助企业快速构建物联网应用。 该项目现已纳…

作者头像 李华
网站建设 2026/4/23 11:22:14

StructBERT模型解析:零样本分类中的注意力机制应用

StructBERT模型解析&#xff1a;零样本分类中的注意力机制应用 1. 引言&#xff1a;AI 万能分类器的兴起与挑战 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;文本分类是构建智能系统的核心任务之一。传统方法依赖大量标注数据进行监督训练&#xff0c;成本高、…

作者头像 李华
网站建设 2026/4/23 11:21:15

WindowTop窗口管理神器:提升工作效率的终极指南

WindowTop窗口管理神器&#xff1a;提升工作效率的终极指南 【免费下载链接】WindowTop-App Set window on top, make it dark, transparent and more 项目地址: https://gitcode.com/gh_mirrors/wi/WindowTop-App WindowTop是一款功能强大的窗口管理工具&#xff0c;专…

作者头像 李华
网站建设 2026/4/23 11:21:46

AI万能分类器行业应用:金融领域文本分类实战案例

AI万能分类器行业应用&#xff1a;金融领域文本分类实战案例 1. 引言&#xff1a;AI万能分类器在金融场景的价值 随着金融科技的快速发展&#xff0c;金融机构每天需要处理海量的非结构化文本数据——包括客户咨询、投诉建议、客服工单、社交媒体舆情、合同条款等。传统的人工…

作者头像 李华