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

上海市计算机学会竞赛平台2022年4月月赛丙组圆环独立集(一)

题目描述

给定一个长度为 nn 的环状数列 a1,a2,⋯ ,ana1​,a2​,⋯,an​,请从中间挑选出一些数字组成一个独立集,使得该独立集中的数字之和达到最大。

所谓环状,是指在考虑相邻关系时,需要把 a1a1​ 和 anan​ 也看做是一对邻居。所谓独立集,就是挑选出的数字在原来的圆环上不能相邻。

输入格式
  • 第一行:单个整数表示 nn。
  • 第二行:nn 个整数表示 a1,a2,⋯ ,ana1​,a2​,⋯,an​。
输出格式
  • 单个整数:表示独立集的数字之和的最大值。
数据范围
  • 对于 30%30% 的数据,1≤n≤201≤n≤20;
  • 对于 60%60% 的数据,1≤n≤50001≤n≤5000;
  • 对于 100%100% 的数据,1≤n≤500,0001≤n≤500,000,
  • 1≤ai≤1,000,0001≤ai​≤1,000,000。
样例数据

输入:

5
1 1 1 1 1

输出:

2

输入:

6
100 1 1 100 1 1

输出:

200

说明:

这个例子告诉我们最优独立集不一定是最大独立集

详见代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int a[500005];
long long dpq[500005];
long long dpb[500005];
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];if (i==1){dpq[i]=a[i];dpb[i]=0;}else{dpq[i]=max(dpq[i-1],dpq[i-2]+a[i]);dpb[i]=max(dpb[i-1],dpb[i-2]+a[i]);}}if (n==1) cout<<a[1];else cout<<max(dpb[n],dpq[n-1]);return 0;
}

相关文章:

  • 开发者视角的网络调试流程进化:抓包工具实践指南与Sniffmaster使用笔记
  • Docker Buildx 简介与安装指南
  • 在C#中的乐观锁和悲观锁
  • 智能出入库管理系统:自动化管控平台
  • 高级定时器TIM1、TIM8
  • AD工程面板拖动以及固定位置
  • AWS WebRTC:通过shell实现多进程启动master
  • AWS知识点和技术面试模拟题
  • 29-Oracle 23ai Flashback Log Placement(闪回日志灵活配置)
  • AWS S3:云存储的“超级基石”
  • AWS Well-Architected Framework详解
  • 30-Oracle 23ai-回顾从前的Flashback设置
  • 基于CT图像的硬参数共享多任务分析:肝脏肿瘤分割与良恶性分类
  • Terraform跨云迁移教程:从AWS到阿里云基础设施同步 (2025)
  • HarmonyOS 5中UniApp的调试步骤
  • 后端开发:计算机网络、数据库常识
  • 大模型现在用的最多 其次是预训练模型,大模型用于rag agent 预训练模型用于微调任务
  • 鸿蒙Next仓颉语言开发实战教程:订单详情
  • 重新定义声音处理:XMOS XVF3800、DOA与Beamforming技术的深度解析
  • SNN学习(4):真实的生物神经学中神经元和人脑结构学习
  • html5网站建设思路/网络营销ppt案例
  • wordpress文章和页面/百度seo培训要多少钱
  • 在什么网站做兼职翻译/做个公司网站大概多少钱
  • access 网站数据库/google海外推广
  • 缔烨建设公司网站/武汉本地seo
  • 大连网站建设过程/seo服务