news 2026/2/4 0:22:03

GESP认证C++编程真题解析 | P10377 [GESP202403 六级] 好斗的牛

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | P10377 [GESP202403 六级] 好斗的牛

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

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

适合人群:

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

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:[P10377 GESP202403 六级] 好斗的牛 - 洛谷

【题目描述】

你有1 0 9 10^9109个牛棚,从左到右一字排开。你希望把n nn头牛安置到牛棚里。麻烦的是,你的牛很好斗,如果他们附近有其他的牛,他们就会不安分地去挑事。其中,第i ii头牛的攻击范围是( a i , b i ) (a_i, b_i)(ai,bi),这意味着,如果他的左边a i a_iai个牛棚或者右边b i b_ibi个牛棚有其他牛,它就会去挑事。

你想留下一段连续的牛棚,并把其他牛棚都卖掉。请问您最少需要留下多少牛棚,才能保证至少存在一种方案能够把所有的n nn头牛都安置进剩余的牛棚里,且没有牛会挑事?

【输入】

第一行一个正整数n nn
第二行n nn个正整数a 1 , a 2 , … a n a_1, a_2, \dots a_na1,a2,an
第三行n nn个正整数b 1 , b 2 , … b n b_1, b_2, \dots b_nb1,b2,bn

【输出】

输出一行一个整数表示答案。

【输入样例】

2 1 2 1 2

【输出样例】

4

【算法标签】

《洛谷 P10377 好斗的牛》 #模拟# #搜索# #GESP# #2024#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;intn;// 牛的数量intflag[15];// 标记数组,用于记录牛是否被使用inta[15];// 排列数组,存储当前排列的牛的顺序intminn=1e9;// 最小总距离,初始化为一个大数structNode{inta;// 牛的左边距离intb;// 牛的右边距离}cow[15];// 牛的信息数组// 深度优先搜索生成全排列voiddfs(intstep){// 如果已经排列完所有牛,计算当前排列的总距离if(step>n){inttot=1;// 初始化总距离,第一头牛需要一个牛棚for(inti=2;i<=n;i++)// 从第二头牛开始计算{// 计算相邻两头牛之间的栅栏距离// 取左边牛的右边距离和右边牛的左边距离的最大值tot+=max(cow[a[i]].a,cow[a[i-1]].b);tot+=1;// 当前这头牛也需要一个牛棚}// 更新最小总距离minn=min(minn,tot);return;}// 生成全排列for(inti=1;i<=n;i++)// 尝试将每头牛放在当前位置{if(!flag[i])// 如果这头牛还没有被使用{flag[i]=1;// 标记为已使用a[step]=i;// 将牛i放在第step个位置dfs(step+1);// 递归放置下一头牛flag[i]=0;// 回溯,取消标记}}}intmain(){// 输入牛的数量cin>>n;// 输入每头牛左边的距离for(inti=1;i<=n;i++){cin>>cow[i].a;}// 输入每头牛右边的距离for(inti=1;i<=n;i++){cin>>cow[i].b;}// 从第一个位置开始深度优先搜索dfs(1);// 输出最小总距离cout<<minn<<endl;return0;}

【运行结果】

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

游戏开发革命:HotPatcher热更新引擎如何重塑资源管理流程

游戏开发革命&#xff1a;HotPatcher热更新引擎如何重塑资源管理流程 【免费下载链接】HotPatcher Unreal Engine hot update manage and package plugin. 项目地址: https://gitcode.com/gh_mirrors/ho/HotPatcher 在游戏开发领域&#xff0c;版本迭代和资源更新一直是…

作者头像 李华
网站建设 2026/1/29 10:27:17

M1芯片Android模拟器完全配置手册:从零开始搭建开发环境

M1芯片Android模拟器完全配置手册&#xff1a;从零开始搭建开发环境 【免费下载链接】android-emulator-m1-preview 项目地址: https://gitcode.com/gh_mirrors/an/android-emulator-m1-preview 在Apple Silicon M1芯片的Mac设备上进行Android应用开发&#xff0c;选择…

作者头像 李华
网站建设 2026/1/29 21:11:42

仅限内部流出:Open-AutoGLM沙箱环境支付拦截机制解密与绕行策略

第一章&#xff1a;Open-AutoGLM 点咖啡不自动付款 在使用 Open-AutoGLM 框架实现自动化点单功能时&#xff0c;部分用户反馈系统能够成功识别菜单并提交订单&#xff0c;但未触发自动付款流程。该问题通常出现在支付网关鉴权失败或用户账户余额校验逻辑异常的场景中。 问题排…

作者头像 李华
网站建设 2026/1/29 22:56:35

GPT-SoVITS语音合成在心理疗愈语音内容生成中的尝试

GPT-SoVITS语音合成在心理疗愈语音内容生成中的尝试 在心理咨询室的灯光下&#xff0c;一位来访者闭上眼睛&#xff0c;耳机里传来熟悉而温和的声音&#xff1a;“深呼吸……感受空气缓缓流入身体。”这声音不属于任何远程连线的真人咨询师&#xff0c;而是由AI生成的、高度还原…

作者头像 李华
网站建设 2026/2/3 1:58:24

GPT-SoVITS能否应对多人混合语音场景?分离与克隆挑战

GPT-SoVITS能否应对多人混合语音场景&#xff1f;分离与克隆挑战 在影视配音、远程会议记录或播客制作中&#xff0c;我们经常面对一个共同难题&#xff1a;如何从一段多个人同时说话的录音里&#xff0c;精准提取某位发言者的声音&#xff0c;并用它生成全新的自然语音&#x…

作者头像 李华
网站建设 2026/1/30 15:17:00

n8n工作流自动化完整指南:7天从入门到实战精通

n8n工作流自动化完整指南&#xff1a;7天从入门到实战精通 【免费下载链接】n8n n8n 是一个工作流自动化平台&#xff0c;它结合了代码的灵活性和无代码的高效性。支持 400 集成、原生 AI 功能以及公平开源许可&#xff0c;n8n 能让你在完全掌控数据和部署的前提下&#xff0c;…

作者头像 李华