蓝桥杯---数组分割

https://www.dotcpp.com/oj/problem3171.html

测试用例分析:

2
2
6 6
2
1 6

这代表有两个测试用例。

第一测试用例:

  • 数组: [6, 6]
  • 长度: 2
分析
  • 数组中的所有元素都是偶数,因此任意组合的和都将是偶数。
  • 可能的组合及其和:
    • 空集: 和 = 0 (偶数)
    • {6}: 和 = 6 (偶数)
    • {6}: 和 = 6 (偶数)
    • {6, 6}: 和 = 12 (偶数)

在这种情况下,所有可能的子集的和都是偶数,包括空集。因此,所有四种可能的子集选择(包括空集)都符合要求。

第二测试用例:

  • 数组: [1, 6]
  • 长度: 2
分析
  • 数组中的元素和为奇数(1 + 6 = 7),不可能将数组分割成两个和都是偶数的部分。
  • 可能的组合及其和:
    • 空集: 和 = 0 (偶数)
    • {1}: 和 = 1 (奇数)
    • {6}: 和 = 6 (偶数)
    • {1, 6}: 和 = 7 (奇数)

对于这个数组,不可能找到一种分割方式,使得两个子集的和都是偶数。因此,没有符合条件的子集选择。

解释输出

根据以上分析,对于第一测试用例,所有4种子集都符合条件,输出应该是4。对于第二测试用例,因为无法将和分成两部分都是偶数,输出应该是0。

动态规划:能用动态规划解决的问题,需要满足三个条件:最优子结构,无后效性和子问题重叠。

package 真题.第十四界;import java.util.Scanner;public class _01数组分割 {static int mod = 1000000007;public static void main(String[] args) {Scanner scan = new Scanner(System.in);int t = scan.nextInt(); // 测试用例的数量while (t-- > 0) {int n = scan.nextInt(); // 数组的长度long sum = 0; // 用于计算数组元素的总和long[] a = new long[n + 1]; // 存储数组元素for (int i = 1; i <= n; i++) {a[i] = scan.nextLong();sum += a[i]; // 累加求总和}// 如果总和是奇数,无法分割成两个和都为偶数的子集if (sum % 2 == 1) {System.out.println(0);continue;}long[][] dp = new long[n + 1][2]; // 动态规划数组dp[0][0] = 1; // 一个元素也不取时,偶数和为0的方案数是1dp[0][1] = 0; // 一个元素也不取时,奇数和的方案数是0for (int i = 1; i <= n; i++) {if (a[i] % 2 == 0) { // 当前元素为偶数dp[i][0] = (dp[i - 1][0] * 2) % mod; // 偶数加偶数还是偶数dp[i][1] = (dp[i - 1][1] * 2) % mod; // 偶数加奇数还是奇数} else { // 当前元素为奇数dp[i][0] = (dp[i - 1][0] + dp[i - 1][1]) % mod; // 奇数加偶数变奇数,奇数加奇数变偶数dp[i][1] = (dp[i - 1][0] + dp[i - 1][1]) % mod; // 同上,反向}}System.out.println(dp[n][0]); // 输出偶数和的方案数}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Parallels Desktop 19 for Mac在 Mac 上运行 Windows有哪些便利性,

使用Parallels Desktop 19 for Mac在Mac上运行Windows可以带来一系列的优势和便利性。 无需重启即可运行Windows&#xff1a;Parallels Desktop 19允许Mac用户无需重启即可在Mac上运行Windows操作系统&#xff0c;这样可以同时使用Mac和Windows的功能&#xff0c;提高工作效率。…

【迅为iMX6Q】开发板 Linux version 6.6.3 SD卡 启动

开发环境 win10 64位 VMware Workstation Pro 16 ubuntu 20.04 【迅为imx6q】开发板&#xff0c; 2G DDR RAM linux-imx 下载 使用 NXP 官方提供的 linux-imx&#xff0c;代码地址为&#xff1a; https://github.com/nxp-imx/linux-imx 使用 git 下载 linux-imx&#xff…

Python 物联网入门指南(八)

原文&#xff1a;zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第三十章&#xff1a;制作机械臂 最后&#xff0c;我们终于到达了大多数人自本书开始以来就想要到达的地方。制作一个机械臂&#xff01;在…

中科国声携新品亮相北京InfoComm China 2024展

4月17日&#xff0c;北京InfoComm China 2024展&#xff08;北京专业视听技术和集成体验解决方案展览会&#xff09;在北京的国家会议中心盛大开幕。展会为期三天。作为备受瞩目的”会议系统国家队“&#xff0c;中科国声携众多优质会议音频产品及全新会议系统解决方案精彩亮相…

中缀表达式求值

题目 请写一个整数计算器&#xff0c;支持加减乘三种运算和括号。 示例1 输入&#xff1a;“12” 返回值&#xff1a;3示例2 输入&#xff1a;“(2*(3-4))*5” 返回值&#xff1a;-10示例3 输入&#xff1a;“32*3*4-1” 返回值&#xff1a;26 思路 经典的中缀表达式求值。…

flask 路由(route)

web 框架使用路由技术来帮助用户记住应用程序的 url。无需从主页导航即可直接访问所需页面。 route() 装饰器用于将 url 绑定到函数&#xff1a; app.route(/hello) def hello_world(): return hello world url /hello 规则绑定到 hello_world() 函数。如果用户访问 url :…

“面包板”是什么?有啥用?

同学们大家好&#xff0c;今天我们继续学习杨欣的《电子设计从零开始》&#xff0c;这本书从基本原理出发&#xff0c;知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例&#xff0c;可以说是全面系统地介绍了电子设计所需的知识…

1950F - 0, 1, 2, Tree!

题目链接&#xff1a;0, 1, 2, Tree! 本道题目其实就是一道贪心的题目&#xff0c;对于思维的考察较多。 思路&#xff1a; 1.首先我们想想什么情况下该树不存在&#xff1f; 由二叉树的性质可知每一个子节点个数为2的树都必须有两个&#xff0c;每一个子节点为1的树必须有…

Vue3从入门到实战:深度掌握组件通信(上部曲)

props的概念&#xff1a; 当你使用Vue 3的组合式API时&#xff0c;props就是一种让你可以从父组件向子组件传递数据的方式。你可以想象成你在给子组件写一封信&#xff0c;把需要传递的信息放在信封里。 在Vue 3中&#xff0c;你可以在子组件的代码中定义props&#xff0c;就…

Dryad Girl Fawnia

一个可爱的Dryad Girl Fawnia的三维模型。她有ARKit混合形状,人形装备,多种颜色可供选择。她将是一个完美的角色,幻想或装扮游戏。 🔥 Dryad Girl | Fawnia 一个可爱的Dryad Girl Fawnia的三维模型。她有ARKit混合形状,人形装备,多种颜色可供选择。她将是一个完美的角色…

Python中直接根据网页内容导出为PDF或XLSX格式抓取网页内容,然后将其解析成适合导出到PDF或XLSX的结构

在Python中&#xff0c;直接根据网页内容导出为PDF或XLSX格式通常涉及几个步骤。首先&#xff0c;你需要抓取网页内容&#xff0c;然后将其解析成适合导出到PDF或XLSX的结构。下面是一些示例代码&#xff0c;展示如何完成这些任务。 网页内容抓取 你可以使用requests库来抓取…

Web 题记

[极客大挑战 2019]LoveSQL 看到这种就肯定先想到万能密码&#xff0c;试试&#xff0c;得到了用户名和密码 总结了一些万能密码&#xff1a; or 11 oror admin admin-- admin or 44-- admin or 11-- admin888 "or "a""a admin or 22# a having 11# a havin…

MVSNet复现及解析

目录 0.库安装1.参考链接2.调试过程 0.库安装 我在因为复现point-nerf才来研究MVSNet的&#xff0c;因此大部分库在复现point-nerf安装时候就已经安装了&#xff0c;剩下的基本上就只执行了下面两步&#xff1a; pip install tensorboardX-2.4.1-py2.py3-none-any.whl pip inst…

Unity引擎Shader 技术点解释

Shader 类 定义&#xff1a; Shader 类是 Unity 中用于封装着色器程序的实例。它允许开发者在同一个文件中定义多个着色器程序&#xff0c;并指导 Unity 如何使用它们。 兼容性&#xff1a; Shader 类需要与 Unity 的渲染管线兼容。Unity 提供了两种主要的渲染管线&#xf…

C++ 之 newmat 矩阵运算库使用笔记

文章目录 Part.I IntroductionChap.I newmat 简介 Part.II 安装与编译Chap.I 直接使用源码Chap.II 基于 CMake 使用源码Chap.III 编译成库 Part.III 关于矩阵的构造与运算Chap.I 矩阵的构造与初始化Chap.II 矩阵的运算Chap.III 矩阵维数和类型的更改Chap.IV 矩阵最值统计 Refer…

【避坑/个人总结】CARLA仿真遇到问题——AttributeError: module “numpy“ has no attribute “bool“

问题描述 执行以下命令时&#xff1a; ./CarlaUE4.sh -prefernvidia // 以及 ros2 launch carla_shenlan_bridge_ego_vis carla_bridge_ego_vehilce.launch.py 出现以下的问题&#xff1a; 其中的报错类型及具体为&#xff1a;AttributeError: module "numpy" has…

Linux虚拟化————KVM

1、安装kvm虚拟化套件 [rootbogon ~]# yum -y install virt* 2、启动服务 [rootbogon ~]# systemctl start libvirtd [rootbogon ~]# systemctl status libvirtd ● libvirtd.service - Virtualization daemonLoaded: loaded (/usr/lib/systemd/system/libvirtd.service; di…

线下商家地图标注服务/店铺地图定位/商铺地图标注服务源码

简介&#xff1a; 前台 单店标注信息提交&#xff0c; 连锁店标注信息提交 &#xff0c;支付订单查询&#xff0c;用户问题反馈 后台 系统基本设置&#xff0c;反馈信息查看&#xff0c;订单信息管理&#xff0c;地图信息管理&#xff0c;管理员密码设置&#xff0c;集成微信…

结构体二级指针

1. 其实*p和**pm都是差不多的&#xff0c;一个是告诉系统是一级指针和二级指针&#xff0c;判断他们是否是二级指针还是看他们保存的是否是指针变量的地址 2.写的程序哪段跳过就是哪段有问题 #include <stdio.h> #include <string.h> #include <stdlib.h>…

香港科技大学广州|数据科学与分析学域硕博招生宣讲会—华东师范大学专场

时间&#xff1a;2024年4月25日&#xff08;星期四&#xff09;13:30 地点&#xff1a;华东师范大学普陀校区文附楼507 报名链接&#xff1a;https://www.wjx.top/vm/Q0cKTUI.aspx# 跨学科研究领域 *数据驱动的人工智能和机器学习 *统计学习和建模 工业和商业分析 *特定行业…