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

广州 网站开发 骏域可以推广的软件有哪些

广州 网站开发 骏域,可以推广的软件有哪些,文章资讯类网站模板,河北seo网站开发题目传送门 前言 别人说这是道简单题,随便搞搞就过了。但我并不觉得 (光状态设计第一步就被卡住了),pdf 了。颓题解了,写篇题解谢罪。 状态设计 设 d p i dp_i dpi​ 表示硬币状态为 i i i 的情况下,最…

题目传送门


前言

别人说这是道简单题,随便搞搞就过了。但我并不觉得 (光状态设计第一步就被卡住了),pdf 了。颓题解了,写篇题解谢罪。


状态设计

d p i dp_i dpi 表示硬币状态为 i i i 的情况下,最多可以买到第几个物品 (非常创新的状态设计)


状态转移

枚举当前硬币状态,由于每次只能使用一枚硬币,所以当前状态一定只比上一个状态多使用了一个硬币。
因此枚举当前状态的每一位,得出上个状态 j j j

对于物品的价格做完前缀和后,二分在 [ d p j + 1 , n ] [dp_j + 1, n] [dpj+1,n] 区间的物品,找到最后一个满足 s c p o s − s c d p j sc_{pos} - sc_{dp_j} scposscdpj p o s pos pos。让 p o s pos pos d p i dp_i dpi m a x max max 即可。


答案

a n s ans ans 初始化为 − 1 -1 1,这样如果它没被更新就说明无解。

d p i = n dp_i = n dpi=n,即在此状态 i i i 下可以买到最后一个物品,那就将此状态对应的花费 s m i sm_i smi a n s ans ans m a x max max 即可。


代码

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e5 + 7;
const int maxs = (1 << 16) + 7;
const int inf  = 0x3f3f3f3f;int n, m, ms;
int mon[27], c[maxn];
int sc[maxn], sm[maxs];
int dp[maxs];
int ans = -1;
void print(int x) {for (int i = 0; i < m; ++i)if (x & (1 << i)) putchar('1');else putchar('0');
}
int main() {scanf("%d%d", &m, &n);for (int i = 1; i <= m; ++i)scanf("%d", mon + i);for (int i = 1; i <= n; ++i)scanf("%d", c + i),sc[i] = sc[i - 1] + c[i];ms = (1 << m) - 1;for (int s = 0; s <= ms; ++s)for (int i = 0; i < m; ++i)if (s & (1 << i)) sm[s] += mon[i + 1];for (int s = 0; s <= ms; ++s) {for (int j = 0; j < m; ++j) {if (!(s & (1 << j))) continue;int lsts = s ^ (1 << j);
//			if (c[dp[lsts] + 1] > sm[s] - sm[lsts])
//				continue;int l = dp[lsts] + 1, r = n, pos = 0;while (l <= r) {int mid = (l + r) >> 1;if (sc[mid] - sc[dp[lsts]] <= sm[s] - sm[lsts])pos = mid, l = mid + 1;else r = mid - 1;}dp[s] = max(dp[s], pos);
//			for (int i = dp[lsts] + 1; i <= n; ++i)
//				if (sc[i] - sc[dp[lsts]] <= sm[s] - sm[lsts])
//					dp[s] = max(dp[s], i);}if (dp[s] == n)ans = max(ans, sm[ms] - sm[s]);}printf("%d\n", ans);
//	for (int s = 0; s <= ms; ++s)
//		printf("sm["), print(s), printf("] = %d\n", sm[s]);
//	for (int s = 0; s <= ms; ++s)
//		printf("dp["), print(s), printf("] = %d\n", dp[s]);return 0;
}

时间复杂度 O ( k × 2 k × l o g ( n ) ) O(k \times 2^k \times log(n)) O(k×2k×log(n))


文章转载自:

http://Zx64tqhQ.pxwsd.cn
http://5K1eNNvB.pxwsd.cn
http://LUpnMndM.pxwsd.cn
http://KpN4ckFL.pxwsd.cn
http://K6J6dlcS.pxwsd.cn
http://ql2RpVgl.pxwsd.cn
http://isS1KXNi.pxwsd.cn
http://ruCvlD6y.pxwsd.cn
http://zHvK8WuT.pxwsd.cn
http://L0kMsDUf.pxwsd.cn
http://jR7ZAHvV.pxwsd.cn
http://cNzJkIOv.pxwsd.cn
http://wBK0updD.pxwsd.cn
http://wuKdYYbb.pxwsd.cn
http://GMe7B06x.pxwsd.cn
http://sxsK5IvY.pxwsd.cn
http://yS2diji6.pxwsd.cn
http://G2C5iP78.pxwsd.cn
http://bQhoXlMI.pxwsd.cn
http://OAcKqYPi.pxwsd.cn
http://ntLCj0af.pxwsd.cn
http://B3EC5jUC.pxwsd.cn
http://264p7C4Y.pxwsd.cn
http://UuaTM1fE.pxwsd.cn
http://8s36f3U9.pxwsd.cn
http://TZIxTmvB.pxwsd.cn
http://9jx8jsZa.pxwsd.cn
http://yeRGzJlW.pxwsd.cn
http://xz8fuW7k.pxwsd.cn
http://0a9fCwx0.pxwsd.cn
http://www.dtcms.com/wzjs/631442.html

相关文章:

  • 深圳网站建设(推荐乐云践新)wordpress主页无法访问
  • 上海家居网站建设视频点播网站开发教程
  • 做一个团购网站的成本可以做超大海报的网站
  • 鄢陵县网站中国联通网站备案及ip地址备案管理要求
  • 网站设计与制作合同微分销管理系统
  • 网站设计开发招聘网站cms系统 开源
  • 网站按城市做分站郑州关键词seo
  • 网站上传好了如何做定向国内做市场调查专业网站
  • 给公司做网站和公众号需要多少钱网站开发php未来发展
  • 教做月嫂的网站有吗绍兴聚氨酯制作公司
  • 如何做网站挂qqwordpress收录差劲啊
  • 手赚网站哪里可以做做现货需要关注的网站
  • 桂林最新情况最新数据温州seo平台
  • 学校网站制作html衡阳网站优化教程
  • 企业网站建设既可以外包给专业的网站建设服务公司乐山网站公众号建设
  • 网站的备案流程自己做网站要多久
  • 南山区网站建设公司电商app开发
  • 开发的某网站建设公司网站源码友情手机站
  • 公众号第三方网站开发免费的行情网站app代码
  • 学校网站建设运行简介做民宿推广都有哪些网站
  • 什么是网站开发时间进度表如何知道网站是否备案过
  • 企业网站制作方法网站的外链是怎么做的
  • 网站的数据库有什么用做网站程序先从哪一步开始
  • 建设银行网站登录没反应抓取的网站如何做seo
  • 金堂做网站的公司浏览器入口
  • 网站开发 图片大学生做推送的网站
  • 智能网站建设服务开源手机网站cms
  • c 做彩票网站南京江北新区
  • 家具公司网页设计宁波优化seo
  • 艺术网站建设模板网站维护 北京