2026/2/10 18:27:51
网站建设
项目流程
建网站排名,有人打电话说请我做网站 骗子,正规网站建设空间哪个好,网络营销的特点有欢迎大家订阅我的专栏#xff1a;算法题解#xff1a;C与Python实现#xff01; 本专栏旨在帮助大家从基础到进阶 #xff0c;逐步提升编程能力#xff0c;助力信息学竞赛备战#xff01;
专栏特色 1.经典算法练习#xff1a;根据信息学竞赛大纲#xff0c;精心挑选…欢迎大家订阅我的专栏算法题解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(1≤N≤2⋅105)株芦笋但是一些植物有遗传差异所以有些植物会比其他植物生长得更快。第i株植物的初始高度是h i h_ihi英寸每天过后第i ii株植物会生长a i a_iai**英寸。FJ会更偏爱某些植物他希望某些特定的植物比其他植物要高。他给了你一个数组**t 1 , … t N t_1,\dots t_Nt1,…tN包含了从0 00到N − 1 N-1N−1的所有不同整数值并且他希望对于第i ii株植物有t i t_iti**株植物的高度比它高。找出满足FJ要求的最少天数或者确定这是不可能的。【输入】每个测试用例包含T TT个子测试用例。输入的第一行包含整数**T ( 1 ≤ T ≤ 10 ) T(1\le T\le 10)T(1≤T≤10)**。以下是T TT个子测试用例。每个子测试用例的第一行包含一个整数N NN。第二行由N NN个整数**h i ( 1 ≤ h i ≤ 10 9 ) h_i(1\le h_i\le 10^9)hi(1≤hi≤109)**组成表示第i ii株芦笋的初始高度。第二行由N NN个整数**a i ( 1 ≤ a i ≤ 10 9 ) a_i(1\le a_i\le 10^9)ai(1≤ai≤109)**组成表示每天第i ii株芦笋的生长高度。第四行包括N NN个不同整数**t i t_iti**这是FJ给你提供的数组。保证所有测试用例中N的总和不超过**2 ⋅ 10 5 2\cdot 10^52⋅105**。【输出】输出T TT行每行表示对应测试用例的答案。如果无法实现则输出− 1 -1−1。注意这个问题涉及到的整数可能需要使用**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#【代码详解】#includebits/stdc.husingnamespacestd;intT,n;structnode{longlongh,a,t;}p[200005];boolcmp(node x,node y){returnx.ty.t;}intmain(){cinT;// 输入Twhile(T--){// 遍历T次询问cinn;// 输入nfor(inti1;in;i)cinp[i].h;// 使用结构体数组记录每个植物的h、a和tfor(inti1;in;i)cinp[i].a;for(inti1;in;i)cinp[i].t;if(n1){// 如果n1特判输出0cout0endl;continue;}intminn1e9,maxn-1e9;// 定义满足条件的最大值和最小值sort(p1,pn1,cmp);// 按照t从小到大方式排序intmark0;// 定义标记位for(inti1;in;i){// 遍历n-1个植物intap[i].h,bp[i].a,cp[i1].h,dp[i1].a;// 定义变量简化代码长度if(bd){// 当bd时if(ac){// 如果a小于等于c永远无法追上输出-1cout-1endl;mark1;break;}else{// 否则只需0天就可以满足maxnmax(maxn,0);}}if(bd){// 当bd时if(ac){// 如果a小于等于c则在某天之后就一直超越intx(c-a)/(b-d)1;// 相减后相除的结果是相等的情况还需要再加1maxnmax(maxn,x);}else{// 否则只需0天就可以满足maxnmax(maxn,0);}}if(bd){// 当bd时if(ac){// 如果a小于等于c永远无法追上输出-1cout-1endl;mark1;break;}else{intx(a-c-1)/(d-b);// 否则开始超越但到某天后就不再满足maxnmax(maxn,0);minnmin(minn,x);// 记录该minn}}}if(mark1)continue;if(maxnminn){// 要求maxnminn即满足条件maxn x minn才有结果输出否则输出-1cout-1endl;continue;}else{coutmaxnendl;}}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