首页 > 其他分享 >给一组数,分为两组,求差最小的情况

给一组数,分为两组,求差最小的情况

时间:2024-05-24 20:39:55浏览次数:10  
标签:一组 int 求差 cin long sum 两组 dp

题目:

 题目代码:

#include <bits/stdc++.h>
using namespace std;
int n;
int dp[10050][105];//规定dp[i][j]是差为i,遍历到第j个的情况是否存在,差最大为10000,有边界,所以可以枚举
int a[10005];
int main()
{
ios::sync_with_stdio(false), cin.tie(0);
cin>>n;
long long sum=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
}
dp[a[1]][1]=1;
for(int i=2;i <= n;i ++)
{
for(int j=0;j<=sum;j++)
{
dp[j+a[i]][i]|=dp[j][i-1];//如果前一个存在,后一个必存在,要用|=,只要有一个存在就存在
dp[abs(j-a[i])][i]|=dp[j][i-1];//要么第i个分到第一堆,要么第i个分到第二堆,两种情况都看一下
}
}
//最大的差其实为和
for(int i=0;i<=sum;i++)
{
if(dp[i][n])
{
cout<<i*sum<<endl;
break;//要跳出循环,因为要最小的差,所以找到后就跳出循环
}
}
return 0;
}

 

标签:一组,int,求差,cin,long,sum,两组,dp
From: https://www.cnblogs.com/2681089286lym/p/18211636

相关文章

  • 一组动画,大繁至简
    ......
  • java实现 给定一个地址经纬度,一组地址经纬度,找出在范围内的地址,和最接近的地址(单位:米)
    packagecom.example.demo10;importjava.util.ArrayList;importjava.util.List;/***java实现给定一个地址经纬度,一组地址经纬度,找出在范围内的地址,和最接近的地址**@authorlonglinji*@date2024/4/15*/publicclassGeoUtils{//地球半径,单位为公里......
  • java实现 给定一个地址经纬度,一组地址经纬度,找出在范围内的地址,和最接近的地址
    packagecom.example.demo10;importjava.util.ArrayList;importjava.util.List;/***java实现给定一个地址经纬度,一组地址经纬度,找出在范围内的地址,和最接近的地址**@authorlonglinji*@date2024/4/15*/publicclassGeoUtils{//地球半径,单位为公里......
  • 第一组
    车票销售系统效率较为低下1.建立规则、仪式、流程和模式:规则和流程:明确定义售票流程,包括车次管理、座位管理、售票、改签、退票和查询等环节。确保每个步骤都有明确的操作指南,以提高效率。仪式和模式:引入标准化的操作仪式,例如在售票窗口或网上购票时,操作员按照特定步骤进行操作......
  • [LeetCode]12. K 个一组翻转链表 C语言实现
    Problem:25.K个一组翻转链表目录思路解题方法复杂度Code思路官方思路多指针+翻转链表+结构体解题方法定义多指针用来查找的头节点每一组的头节点每一组的尾节点,用来找到下一组头节点复杂度时间复杂度:添加时间复杂度,示例:$O(n)$空间复杂度:添加空......
  • 【OJ】K 个一组翻转链表
    题目基本思路:用计数+栈实现分段,K个一组地翻转链表。#include<bits/stdc++.h>#include<stack>usingnamespacestd;structlist_node{intval;structlist_node*next;};list_node*input_list(){intval,n;scanf("%d",&n);list_node*phea......
  • K 个一组翻转链表
    题目:structListNode{intval;ListNode*next;ListNode():val(0),next(nullptr){}ListNode(int_val):val(_val),next(nullptr){}ListNode(int_val,ListNode*_next):val(_val),next(_next){}};classSolution{public:ListNod......
  • Jitsi Meet 是一组开源项目,使用户能够使用和部署具有最先进视频质量和功能的视频会议
    JitsiMeet是一组开源项目,使用户能够使用和部署具有最先进视频质量和功能的视频会议平台。 为了在运行Docker和DockerCompose的机器上快速运行JitsiMeet,请执行以下步骤:下载并解压缩最新版本。不要克隆git仓库。如果您对运行测试映像感兴趣,请参阅下文:wget$(curl-sht......
  • Qt 设置button互斥,一组button只能选中一个
    一、同一容器内互斥效果1.先在界面是拖入一个控件容器,这里以QGroupBox为例2.再放进来几个按钮控件3.设置按钮属性,第一个红框勾选是设置按钮可选,第二个勾选就是设置自动互斥,当同一容器内的按钮勾选了这个选项就会自动互斥二、不同容器内互斥效果1.还是先设置所要互斥的......
  • 两组数据合并后会发生什么?
    起因(由图可知是23年扬州期末,但是我找不到解析就此作罢)试进行分析A数组$X_1$\(X_2\)数组容量\(N_1\)\(N_2\)平均数\(M_1\)\(M_2\)合并后数据的平均值为\(N_1M_1+N_2M_2\overN_1+N_2\)那么,由于\(N_1+N_2\)是正整数,考虑上述三个平均值的大小关系,等价......