当前位置:网站首页>拆分整数为2的幂次项和 → 理解多重背包问题二进制优化的核心思想
拆分整数为2的幂次项和 → 理解多重背包问题二进制优化的核心思想
2022-08-10 15:25:00 【hnjzsyjyj】
【题目描述】
输入一个整数,输出为2的幂次项和的形式。
【输入样例】
26
【输出样例】
26=1+2+4+8+11
【算法分析】
理解了此题,就明白了多重背包问题的二进制优化的主要思想。
多重背包问题的二进制优化思想解析及题目详见 https://blog.csdn.net/hnjzsyjyj/article/details/126190151
为了方便说明问题,此处简述多重背包问题的二进制优化思想如下:
多重背包问题通常可转化成01背包问题求解。但若将每种物品的数量拆分成多个1的话,时间复杂度会很高,从而导致TLE。所以,需要利用二进制优化思想。即:一个正整数n,可以被分解成1,2,4,…,2^(k-1),n-2^k+1的形式。其中,k是满足n-2^k+1>0的最大整数。
例如,假设给定价值为2,数量为10的物品,依据二进制优化思想可将10分解为1+2+4+3,则原来单个价值为2,数量为10的物品可等效转化为价值分别为1*2,2*2,4*2,3*2,即价值分别为2,4,8,6,数量均为1的物品。
.
【算法代码一】
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
cout<<n<<"=";
int k=1;
while(k<=n) {
if(k==n) cout<<k;
else cout<<k<<"+";
n=n-k;
k=k*2;
}
if(n>0) {
cout<<n;
}
return 0;
}
/*
in1:
26
out1:
26=1+2+4+8+11
in2:
7
out2:
7=1+2+4
*/
【算法代码二】
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
cout<<n<<"=";
int t=0;
int k=1;
while(k<=n) {
if(k==n) cout<<"2^"<<t;
else cout<<"2^"<<t<<"+";
n=n-k;
k=k*2;
t++;
}
if(n>0) {
cout<<n;
}
return 0;
}
/*
in1:
26
out1:
26=2^0+2^1+2^2+2^3+11
in2:
7
out2:
7=2^0+2^1+2^2
*/
【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/126190151
边栏推荐
- Asterisk SIP media path
- NFT digital collection development issue - digital collection platform
- Yann LeCun转推:参数减少50倍,性能还更好,MetaAI推出Atlas信息检索模型
- Redis -- Nosql
- Yi Gene|In-depth review: epigenetic regulation of m6A RNA methylation in brain development and disease
- Containerization | Scheduled Backups in S3
- scala basics
- NPM - Cannot read properties of null (reading 'pickAlgorithm') 解决方案
- 商业版SSL证书
- Zijin Example
猜你喜欢

商业版SSL证书

Parse the value of uuid using ABAP regular expressions

metaForce佛萨奇2.0系统开发功能逻辑介绍

虚拟电厂可视化大屏,深挖痛点精准减碳

消息称原美图高管加盟蔚来手机 顶配产品或超7000元

2022年软考复习笔记一

Based on Azuki Series: NFT Valuation Analysis Framework "DRIC"

企业如何开展ERP数据治理工作?_光点科技

NFT digital collection development issue - digital collection platform

FP6378AS5CTR SOT - 23-5 effective 1 mhz2a synchronous buck regulator
随机推荐
Introduction to the functional logic of metaForce Fosage 2.0 system development
请查收 2022华为开发者大赛备赛攻略
TestLink Export Use Case Transformation Tool
2025年推出 奥迪透露将推出大型SUV产品
Cesium快速上手4-Polylines图元使用讲解
使用 ABAP 正则表达式解析 uuid 的值
Colocate Join :ClickHouse的一种高性能分布式join查询模型
Detailed understanding of all built-in functions (Part 2)
异地多活方法论
Systemui status bar to add a new icon
数据在内存中的存储
Methodology of multi-living in different places
架构设计之一——基础架构
SWIG tutorial "two"
一个 ABAP 开发的新浪微博语义情感分析工具
APP automation testing with Uiautomator2
A Sina Weibo semantic sentiment analysis tool developed by ABAP
How to code like a pro in 2022 and avoid If-Else
【芯片】人人皆可免费造芯?谷歌开源芯片计划已释放90nm、130nm和180nm工艺设计套件
fastposter v2.9.1 程序员必备海报生成器