当前位置: 首页 > article >正文

GESP2024年3月认证C++六级( 第三部分编程题(2)好斗的牛)

参考程序(暴力枚举)

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N;
vector<int> a, b;
int ans = 1e9;
int main() 
{
	cin >> N;
	a.resize(N);
	b.resize(N);
	for (int i = 0; i < N; ++i) 
	{
		cin >> a[i];
	}
	for (int i = 0; i < N; ++i) 
	{
		cin >> b[i];
	}
	vector<int> permutation;
	permutation.resize(N);
	for (int i = 0; i < N; i ++)
		permutation[i] = i;
	do 
	{
		int curr_len = N;
		for (int i = 1; i < N; ++i) 
		{
			curr_len += max(b[permutation[i - 1]], a[permutation[i]]);
		}
		ans = min(ans, curr_len);
	} while(next_permutation(permutation.begin(), permutation.end()));
	cout << ans << endl;
	return 0;
}

参考程序(贪心算法)

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int N;
    cin >> N;

    vector<int> a(N), b(N);
    for (int i = 0; i < N; ++i) {
        cin >> a[i];  // 左侧攻击范围
    }
    for (int i = 0; i < N; ++i) {
        cin >> b[i];  // 右侧攻击范围
    }

    // 牛的放置策略:
    // 将每头牛的攻击范围 [a[i], b[i]] 转化为一个区间
    vector<pair<int, int>> cows(N);
    for (int i = 0; i < N; ++i) {
        cows[i] = {a[i], b[i]};
    }

    // 排序:根据每头牛的攻击范围进行排序
    sort(cows.begin(), cows.end());

    // 计算最少需要的牛棚数量
    int left = 0, right = 0;
    for (int i = 0; i < N; ++i) {
        // 当前牛的位置必须满足其攻击范围
        left = max(left, cows[i].first);              // 最小位置
        right = left + cows[i].second;                // 最大位置(放置当前牛之后的最远位置)
        left = right;                                 // 更新最左边界,准备放置下一个牛
    }

    cout << right << endl;  // 最终右边界即为所需的牛棚数量

    return 0;
}


http://www.kler.cn/a/520706.html

相关文章:

  • 基于Django的豆瓣影视剧推荐系统的设计与实现
  • spark运行流程
  • [ Spring ] Spring Cloud Alibaba Message Stream Binder for RocketMQ 2025
  • 基于Springboot用axiospost请求接收字符串参数为null的解决方案
  • 理解C++中的右值引用
  • 深入MapReduce——引入
  • python基础语法(3) -------- 学习笔记分享
  • 99.17 金融难点通俗解释:归母净利润
  • Day42:列表的组合
  • 图像加解密
  • Linux内核组成
  • 品牌RWA化构建指南:资产数字化与价值共创
  • 【云原生】【适用小白】SpringCloud Alibaba开源Nacos切换到MSE Nacos
  • Helm Chart 实现 Kubernetes 应用多环境部署实战
  • 【黑龙江乡镇界】面图层arcgis数据shp格式乡镇名称和编码wgs84无偏移内容测评
  • SpringCloud系列教程:微服务的未来(十七)监听Nacos配置变更、更新路由、实现动态路由
  • 十年筑梦,再创鲸彩!庆祝和鲸科技十周年
  • 论文阅读(二):理解概率图模型的两个要点:关于推理和学习的知识
  • 协助工具-任意门导航
  • 996引擎 - 前期准备-配置开发环境
  • 2025寒假训练——天梯赛训练(1)
  • 【代码随想录】第二、三章-链表、哈希表
  • PyQt5之QtDesigner的若干配置和使用
  • pyautogui操控Acrobat DC pro万能PDF转Word,不丢任何PDF格式样式
  • 【识别代码截图OCR工具】
  • 牛客训练营(二)