bzoj2287【POJ Challenge】消失之物 缺一01背包
时间:2019-08-24
本文章向大家介绍bzoj2287【POJ Challenge】消失之物 缺一01背包,主要包括bzoj2287【POJ Challenge】消失之物 缺一01背包使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
bzoj2287【POJ Challenge】消失之物 缺一01背包
链接
思路
分治solve(l,r,arr)表示缺少物品\([l,r]\)的dp数组arr。
然后solve(l,mid,arr)用右边的物品更新,solve(mid+1,r,arr)同理。
\(f(n)=2*f(\frac{n}{2})+(r-l+1)*m\)
复杂度为\(O(nmlog{n})\)
缺点最短路也是这样,用\(floyd\)
代码
#include <bits/stdc++.h>
using namespace std;
const int _=2e3+7;
int n,m,w[_],tmp[_<<2][_],ans[_],cnt;
void solve(int l,int r,int *f) {
if(l==r) {
for(int i=1;i<=m;++i) printf("%d",f[i]);puts("");
return;
}
int mid=(l+r)>>1,p=++cnt;
for(int i=0;i<=m;++i) tmp[p][i]=f[i];
for(int i=mid+1;i<=r;++i)
for(int j=m;j>=w[i];--j)
f[j]+=f[j-w[i]],f[j]%=10;
solve(l,mid,f);
for(int i=0;i<=m;++i) f[i]=tmp[p][i];
for(int i=l;i<=mid;++i)
for(int j=m;j>=w[i];--j)
f[j]+=f[j-w[i]],f[j]%=10;
solve(mid+1,r,f);
}
int main() {
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i) scanf("%d",&w[i]);
tmp[0][0]=1,solve(1,n,tmp[0]);
return 0;
}
原文地址:https://www.cnblogs.com/dsrdsr/p/11405969.html
- ASP.NET MVC项目开发笔记
- .NET Core 实战笔记3 ASP.NET Core
- HTML页面中的lang属性
- JSP Cheat Sheet - JavaWeb基础学习速查表
- 把网站改成APP吧-Xamarin WebView
- 数据库E-R模型关系图
- 修改Visual Studio类模板添加版权注释信息
- Oracle 11g 安装教程
- ASP.NET MVC学习笔记07数据表和模型添加新字段
- 以太坊·电影院场景区块链应用探索
- 最全爬虫攻略:微博、APP、公众号一个不能少!
- 注册中心 Eureka 源码解析 —— Eureka-Client 初始化(一)之 EurekaInstanceConfig
- 无论人工智能发展到什么地步,都离不开这6段代码
- Dubbo源码解析 —— 逻辑层设计之服务降级
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- nifi.sh 脚本解读
- 关于当前PHP脚本运行时系统信息相关函数
- NIFI启动源码解读
- 高并发系统三大利器之降级
- 简单学习PHP中的层次性能分析器
- 常见乱码问题分析
- 深入理解 Vue 模板渲染:Vue 模板反编译
- 彻底搞懂 etcd 系列文章(七):etcd gRPC 服务 API
- NIFI 开发注解详述
- [已解决]java请求爬取https网站报错javax.net.ssl.SSLHandshakeException的解决办法
- 面经手册 · 第7篇《ArrayList也这么多知识?一个指定位置插入就把谢飞机面晕了!》
- JsonPath实践(六)
- 自定义Processor组件
- Android开发第三讲,布局管理器
- Android 开发第四讲 TextView的基本使用