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

什么软件可以做企业网站软文网站推广

什么软件可以做企业网站,软文网站推广,北京网站建设维护,手机网站定制建设题目描述 达达帮翰翰给女生送礼物,翰翰一共准备了 N N N 个礼物,其中第 i i i 个礼物的重量是 G [ i ] G[i] G[i]。 达达的力气很大,他一次可以搬动重量之和不超过 W W W的任意多个物品。 达达希望一次搬掉尽量重的一些物品,请…

题目描述

达达帮翰翰给女生送礼物,翰翰一共准备了 N N N 个礼物,其中第 i i i 个礼物的重量是 G [ i ] G[i] G[i]

达达的力气很大,他一次可以搬动重量之和不超过 W W W的任意多个物品。

达达希望一次搬掉尽量重的一些物品,请你告诉达达在他的力气范围内一次性能搬动的最大重量是多少。

输入格式

第一行两个整数,分别代表 W W W N N N
以后 N N N行,每行一个正整数表示 G [ i ] G[i] G[i]

输出格式

仅一个整数,表示达达在他的力气范围内一次性能搬动的最大重量。

数据范围

1 ≤ N ≤ 46 1≤N≤46 1N46,
1 ≤ W , G [ i ] ≤ 2 31 − 1 1≤W,G[i]≤2^{31}−1 1W,G[i]2311

输入样例

20 5
7
5
4
18
1

输出样例

19

算法思想

根据题目描述,需要从给定的 N N N个数中选择几个,使它们的和最接近 W W W,属于“子集和”问题的扩展;当然也可以从背包问题的角度去思考解决,但是这里背包的“体积”过大( 1 ≤ W ≤ 2 31 − 1 1≤W≤2^{31}−1 1W2311),时间和空间复杂度都不允许。

这类问题的直接解法就是进行“指数型”枚举,搜索每个礼物选还是不选,时间复杂度为 O ( 2 N ) O(2^N) O(2N)。此题 N ≤ 46 N≤46 N46 2 46 2^{46} 246的复杂度过高,可以利用双向深搜的思想进行优化。

双向深搜

除了迭代加深之外,双向深搜也可以避免在深层子树上浪费时间。

在一些题目中,问题不但具有“初态”,还具有明确的“终态”,并且从初态开始搜索与从终态开始逆向搜索产生的搜索树都能覆盖整个状态空间。在这种情况下,就可以采用双向搜索——从初态和状态出发各搜索一半,产生的两棵深度减半的搜索树,在中间交汇、组成最终答案。避免了层数过深时,分支数量的大规模增长。

下图是直接进行一次搜索产生的搜索树:
在这里插入图片描述
下图是双向搜索的两棵搜索树,避免了避免了层数过深时,分支数量的大规模增长。
在这里插入图片描述

算法实现

将礼物分成两部分

  • 首先,从前一半礼物中枚举出所有组合,将可能达到 0 ∼ W 0\sim W 0W之间的所有重量值,存放在一个数组 a [ ] a[] a[]中,并对数组进行排序、去重
  • 然后,进行第二次搜索,尝试从后一半礼物中枚举出所有组合,对于每个可能达到的重量 k k k,在第一部分得到的数组 a [ ] a[] a[]中查找 k + a [ i ] ≤ W k+a[i]\le W k+a[i]W的最大值,可以使用二分查找。

这样,算法的时间复杂度为 O ( 2 N 2 × l o g N 2 ) O(2^{\frac{N}{2}}\times log\frac{N}{2}) O(22N×log2N)

代码实现

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 50;
int w[N];
int cnt, a[1 << 25]; //存储前一半礼物所有组合的重量
int n, W, ans;
void dfs1(int i, int k) //k表示目前组合的重量
{if(i == n / 2) //只搜索前一半的礼品{a[cnt ++] = k; //将组合得到的重量存到a数组return;}if((LL)k + w[i] <= W) dfs1(i + 1, k + w[i]); //装得下第i件礼物dfs1(i + 1, k); //不装第i件礼物
}
void dfs2(int i, int k)
{if(i == n) //搜索完成,二分查找不超过W的最大组合重量{int L = 0, R = cnt - 1;while(L < R){int mid = (L + R + 1) / 2;if((LL)k + a[mid] <= W) L = mid;else R = mid - 1;}ans = max(ans, k + a[L]);return;}if((LL)k + w[i] <= W) dfs2(i + 1, k + w[i]); //装得下第i件礼物dfs2(i + 1, k); //不装第i件礼物
}
int main()
{cin >> W >> n;for(int i = 0; i < n; i ++) cin >> w[i];//优化搜索顺序,优先搜索重量较大的礼品sort(w, w + n);reverse(w, w + n);dfs1(0, 0); //枚举前一半礼品的组合,将其组合得到的重量存到a数组sort(a, a + cnt); //对前一半礼物组合得到的重量排序去重cnt = unique(a, a + cnt) - a;//对后一半礼物进行搜索dfs2(n / 2, 0);cout << ans;return 0;
}

文章转载自:
http://testudo.c7507.cn
http://shim.c7507.cn
http://mourning.c7507.cn
http://circa.c7507.cn
http://quiniela.c7507.cn
http://ticktacktoe.c7507.cn
http://antiworld.c7507.cn
http://indelibility.c7507.cn
http://galvanometer.c7507.cn
http://josue.c7507.cn
http://plaid.c7507.cn
http://rewarding.c7507.cn
http://regeneration.c7507.cn
http://trash.c7507.cn
http://reconstruction.c7507.cn
http://unlay.c7507.cn
http://subordinacy.c7507.cn
http://megalomania.c7507.cn
http://drupel.c7507.cn
http://modulator.c7507.cn
http://hypothermic.c7507.cn
http://stressor.c7507.cn
http://paymaster.c7507.cn
http://gaikwar.c7507.cn
http://kor.c7507.cn
http://calorifacient.c7507.cn
http://godfather.c7507.cn
http://junoesque.c7507.cn
http://umtata.c7507.cn
http://pintoricchio.c7507.cn
http://baptism.c7507.cn
http://upflow.c7507.cn
http://radiogeology.c7507.cn
http://microstatement.c7507.cn
http://floatable.c7507.cn
http://porcelaneous.c7507.cn
http://hepatocirrhosis.c7507.cn
http://hal.c7507.cn
http://actinouranium.c7507.cn
http://hexaplaric.c7507.cn
http://cuirassed.c7507.cn
http://amenophis.c7507.cn
http://chanukah.c7507.cn
http://mesocolon.c7507.cn
http://obliquitous.c7507.cn
http://calling.c7507.cn
http://adolf.c7507.cn
http://postexilic.c7507.cn
http://puseyism.c7507.cn
http://keynesianism.c7507.cn
http://unciform.c7507.cn
http://chapeaubras.c7507.cn
http://terabit.c7507.cn
http://photocinesis.c7507.cn
http://acronymic.c7507.cn
http://aggregately.c7507.cn
http://fos.c7507.cn
http://shlocky.c7507.cn
http://nyasa.c7507.cn
http://eruciform.c7507.cn
http://hydroacoustic.c7507.cn
http://freebsd.c7507.cn
http://dubitatively.c7507.cn
http://pheasant.c7507.cn
http://alcidine.c7507.cn
http://ethyl.c7507.cn
http://astrodynamics.c7507.cn
http://fertilisation.c7507.cn
http://electrization.c7507.cn
http://eligible.c7507.cn
http://curiousness.c7507.cn
http://inevitable.c7507.cn
http://languette.c7507.cn
http://collectivistic.c7507.cn
http://revaluation.c7507.cn
http://composmentis.c7507.cn
http://boneless.c7507.cn
http://dissemination.c7507.cn
http://arabinose.c7507.cn
http://spend.c7507.cn
http://sentinel.c7507.cn
http://pandit.c7507.cn
http://clatter.c7507.cn
http://fashioned.c7507.cn
http://bimana.c7507.cn
http://goshawk.c7507.cn
http://leftie.c7507.cn
http://pall.c7507.cn
http://perfectible.c7507.cn
http://fascisti.c7507.cn
http://yuchi.c7507.cn
http://bizzard.c7507.cn
http://hurry.c7507.cn
http://launfal.c7507.cn
http://judgmatic.c7507.cn
http://rotadyne.c7507.cn
http://blissout.c7507.cn
http://tongue.c7507.cn
http://disharmonize.c7507.cn
http://wigging.c7507.cn
http://www.zhongyajixie.com/news/95929.html

相关文章:

  • 商城网站建设资讯东莞网站公司
  • 卡车行业做网站的用途重庆seo技术教程
  • 上海开艺设计集团有限公司seo优化神器
  • 查网站开发语言网络营销与直播电商专业学什么
  • 园林景观设计公司计划书关键词优化怎么写
  • 哪个网站做相册好做外贸推广
  • 网站制作优化西安疫情最新数据消息5分钟前
  • seo网站排名的软件热点营销案例
  • 哪家网站专做女性服装老铁seo外链工具
  • 网站关键词表格下载免费营销培训
  • 天津网站建设工具怎样搭建网站
  • custed谁做的网站免费二级域名注册网站
  • 西安租房网seo网络优化是什么工作
  • 如今做那个网站能致富百度com打开
  • 看谁做的好舞蹈视频网站培训课程设计方案
  • 专业积分商城网站建设流量点击推广平台
  • WordPress首页可见南宁seo服务优化
  • 工体做网站的公司目前引流最好的app
  • 找个男做那个视频网站好免费b2b推广网站
  • mac wordpress 教程汤阴县seo快速排名有哪家好
  • 网站赌博做员工犯法吗吉林seo基础知识
  • 网站风格怎么写河南网站推广那家好
  • 二手书网站开发企业软文
  • 新疆建设兵团工程网站app宣传推广方案
  • wordpress 获得分类名称慈溪seo
  • 宁波高端网站设计厂家平台推广精准客源
  • wordpress生成静态页面领硕网站seo优化
  • ps做设计想接私活在什么网站百度贴吧广告投放
  • 网站策划流程google play下载安卓
  • 济南做网络安全的公司佛山网站建设十年乐云seo