news 2026/6/23 5:08:01

打卡信奥刷题(2750)用C++实现信奥题 P3657 [USACO17FEB] Why Did the Cow Cross the Road II P

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(2750)用C++实现信奥题 P3657 [USACO17FEB] Why Did the Cow Cross the Road II P

P3657 [USACO17FEB] Why Did the Cow Cross the Road II P

题目背景

本题与 金组同名题目 在题意上一致,唯一的差别是数据范围。

题目描述

Farmer John 饲养了N NN种奶牛,编号从1 11N NN。一些品种的奶牛和其他奶牛间相处良好,事实证明,如果两个品种的奶牛编号分别为a , b a,ba,b,当∣ a − b ∣ ≤ 4 |a-b| \leq 4ab4时,这两个品种的奶牛能友好相处,否则不能友好相处。

一条长长的道路贯穿整个农场,道路的左侧有N NN个牧场(每个品种的奶牛恰好占据一个牧场),道路的右侧也有N NN个牧场(每个品种的奶牛恰好占据一个牧场)。为了让奶牛们安全穿过马路,Farmer John 希望能在马路上画出一些人行道(牛行道?),要求这些人行道满足如下条件:

  1. 人行道从左侧的某个牧场出发,连接到右侧的某个牧场;
  2. 人行道连接的两个牧场的奶牛要能友好相处;
  3. 人行道不能在道路中间相交;
  4. 每个牧场只能与一条人行道相连。

你需要帮 FJ 求出最多能有多少条人行道。

输入格式

输入第一行一个整数N NN1 ≤ N ≤ 10 5 1 \leq N \leq 10^51N105)。

接下来N NN行,每行一个整数a i a_iai,代表道路左侧第i ii个牧场的奶牛品种编号。

接下来N NN行,每行一个整数b i b_ibi,代表道路右侧第i ii个牧场的奶牛品种编号。

输出格式

输出最多能画多少条人行道。

输入输出样例 #1

输入 #1

6 1 2 3 4 5 6 6 5 4 3 2 1

输出 #1

5

说明/提示

保证a i , b i a_i,b_iai,bi均为从1 11N NN的排列。

C++实现

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>usingnamespacestd;#defineregregisterinlinechargc(){staticconstintbs=1<<22;staticunsignedcharbuf[bs],*st,*ed;if(st==ed)ed=buf+fread(st=buf,1,bs,stdin);returnst==ed?EOF:*st++;}#definegcgetcharinlineintread(){intres=0;charch=gc();boolfu=0;while(!isdigit(ch))fu|=(ch=='-'),ch=gc();while(isdigit(ch))res=(res<<3)+(res<<1)+(ch^48),ch=gc();returnfu?-res:res;}#defineN100005intn;inta[N],b[N];intpos[N];intc[N*9],cnt,tmp[10];intlow[N*9],ans;intmain(){n=read();for(reginti=1;i<=n;i++)a[i]=read();for(reginti=1;i<=n;i++)pos[b[i]=read()]=i;for(reginti=1;i<=n;i++){inttop=0;for(regintj=max(1,a[i]-4);j<=min(n,a[i]+4);j++)tmp[++top]=pos[j];sort(tmp+1,tmp+1+top);for(regintj=top;j>=1;j--)c[++cnt]=tmp[j];}low[++ans]=c[1];for(reginti=2;i<=cnt;i++){if(c[i]>low[ans])low[++ans]=c[i];else{intt=lower_bound(low+1,low+1+ans,c[i])-low;low[t]=c[i];}}cout<<ans<<endl;return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

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

数学建模论文的高效复现方法有哪些?10款AI写作工具帮你轻松搞定

AI工具已成为数学建模论文写作的高效助手&#xff0c;评测显示部分智能写作平台能自动处理LaTeX公式排版、生成可执行代码框架并辅助模型复现&#xff0c;特别适合时间紧迫的论文场景。这些工具通过优化算法逻辑转换、增强可视化输出能力以及提升文档兼容性&#xff0c;显著降低…

作者头像 李华
网站建设 2026/6/18 9:05:59

10个AI写作神器,让你的数学建模论文复现效率翻倍

数学建模论文的复现与排版往往时间紧迫、任务繁重&#xff0c;但借助AI工具可以显著提升效率。通过对10款热门AI论文写作工具的评测&#xff0c;发现部分工具能自动优化公式排版、生成代码框架&#xff0c;甚至辅助模型复现&#xff0c;尤其适合需要快速完成高质量论文的场景。…

作者头像 李华
网站建设 2026/6/17 17:29:52

开发孕期健康管理工具,输入孕周,推送每周孕期注意事项,产检项目提醒,记录胎动次数,体重变化,推荐孕期适宜饮食和运动。

孕期健康管理工具 - 全栈开发实践 1. 实际应用场景描述 本工具面向孕妈妈、准爸爸及医疗机构&#xff0c;提供从孕早期到孕晚期的全程数字化健康管理解决方案。在真实场景中&#xff0c;孕期管理涉及多个维度&#xff1a; 典型使用场景&#xff1a; - 家庭场景&#xff1a;孕妈…

作者头像 李华
网站建设 2026/6/20 15:50:20

基于Java的工资智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 工资智慧管理系统主要功能模块涵盖了员工、职位、工资管理等&#xff0c;旨在提升企业管理效率和准确性。该系统对比传统选题具有显著优势&#xff1a;其创新性体现在将多种人事薪酬管理模式集成至一个平台上&#xff1b;实用性在于能够自…

作者头像 李华
网站建设 2026/6/20 16:57:58

【保姆级核爆教程】GPT-5.2 + Sora 2 + Gemini 3.0 全家桶实战:手把手教你搭建“零延迟”的未来派AI中台(源码+压测+避坑指南)

第一章&#xff1a; 寒武纪大爆发前夜的“开发者焦虑” 如果你是一名开发者。 尤其是关注 AI 领域的全栈工程师。 你最近一定感到了一种前所未有的——焦虑。 这种焦虑&#xff0c;不是来自失业。 而是来自**“选择困难症”和“架构破碎感”**。 OpenAI 刚刚暗示了 GPT-5…

作者头像 李华