news 2026/4/24 2:39:09

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/4/17 18:26:17

Open-AutoGLM 云手机实战指南:3步实现远程安卓实例自动化控制

第一章&#xff1a;Open-AutoGLM 云手机概述Open-AutoGLM 是一款基于云端虚拟化技术的智能移动计算平台&#xff0c;专为自动化任务执行、大规模数据采集与AI模型调度设计。该系统将Android运行环境完全迁移至云端服务器&#xff0c;用户可通过Web界面或API远程控制虚拟手机实例…

作者头像 李华
网站建设 2026/4/21 5:28:57

算法题 翻转图像

832. 翻转图像 问题描述 给定一个 n x n 的二进制矩阵 image&#xff0c;对其进行水平翻转后再对每个元素进行反转&#xff08;0变1&#xff0c;1变0&#xff09;。 水平翻转&#xff1a;将每一行的元素顺序颠倒 反转&#xff1a;将每个 0 变为 1&#xff0c;每个 1 变为 0 …

作者头像 李华
网站建设 2026/4/17 14:03:46

揭秘Open-AutoGLM部署全流程:手把手教你避坑并实现一键部署

第一章&#xff1a;Open-AutoGLM部署概述Open-AutoGLM 是一个开源的自动化通用语言模型管理框架&#xff0c;旨在简化大语言模型的本地化部署、服务调度与推理优化。该框架支持多种主流模型格式&#xff0c;并提供模块化的插件体系&#xff0c;便于开发者根据实际需求进行功能扩…

作者头像 李华
网站建设 2026/4/18 8:57:53

n8n工作流自动化平台:从零开始构建智能自动化流程的完整指南

在当今数字化转型的时代&#xff0c;自动化已经成为企业和个人提升效率的关键。n8n作为一款开源的工作流自动化平台&#xff0c;为初学者提供了一个直观且强大的工具&#xff0c;帮助您轻松构建复杂的自动化流程。无论是简单的文件处理、数据同步&#xff0c;还是复杂的AI驱动决…

作者头像 李华
网站建设 2026/4/23 8:10:48

通信系统中滤波器的模拟电子技术实现:操作指南

通信系统中的模拟滤波器设计实战&#xff1a;从原理到PCB落地在高速无线通信时代&#xff0c;我们每天都在与看不见的电磁波打交道。无论是5G手机、Wi-Fi路由器&#xff0c;还是卫星接收终端&#xff0c;它们背后都离不开一个看似低调却至关重要的角色——模拟滤波器。你有没有…

作者头像 李华