BZOJ4145_The Prices_KEY
看到M<=16经典状态压缩的数据范围,考虑题目。
一道类似于背包的题目。
设f[i][j]表示前i个商店,物品购买状态为j。
先将f[i][j]加上w[i](到i的路费),转移一次,在与同状态的前一商店取min就好了。
code:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int N,M,a[][],w[];
int f[][<<]; int main()
{
scanf("%d%d",&N,&M);
for(int i=;i<=N;i++){
scanf("%d",&w[i]);
for(int j=;j<=M;j++)scanf("%d",&a[i][j]);
}
for(int S=;S<<<M;S++)f[][S]=1e9;
for(int i=;i<=N;i++){
for(int S=;S<<<M;S++)f[i][S]=f[i-][S]+w[i];
for(int S=;S<<<M;S++)
for(int j=;j<=M;j++)
if(!(S&(<<j-)))f[i][S|(<<j-)]=min(f[i][S|(<<j-)],f[i][S]+a[i][j]);
for(int S=;S<<<M;S++)f[i][S]=min(f[i][S],f[i-][S]);
}
printf("%d",f[N][(<<M)-]);
return ;
}
BZOJ4145_The Prices_KEY的更多相关文章
随机推荐
- 关于3d打印
3d打印技术是20世纪90年代逐渐兴起的一项先进的制造技术.3D打印——three-dimensional printing,简称3dp.又称三维打印或立体打印,最早由美国麻省理工学院于1993年开发 ...
- 基于scrapyd爬虫发布总结
一.版本情况 python以丰富的三方类库取得了众多程序员的认可,但也因此带来了众多的类库版本问题,本文总结的内容是基于最新的类库版本. 1.scrapy版本:1.1.0 D:\python\Spid ...
- 执行一条sql语句update多条记录实现思路
如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?本文以一个示例向大家讲解下如何实现如标题所示的情况,有此需求的朋友可以了解下 通常情况下,我们会使用以下SQL语句来更新字段值: ...
- Linux 环境部署记录(三) - Jenkins安装与配置
Jenkins安装 为了兼容生产环境的jdk1.7版本,从官网得知,Jenkins必须是1.6之前的版本,因此下载jenkins-1.596.3-1.1.noarch.rpm到本地进行安装: #移动到 ...
- 铁乐学python_day10_作业
1.继续整理函数相关知识点,写博客. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def sum_n(*args): sum = 0 for i in args: sum += i r ...
- 【Excel】单元格的下拉框是怎么做的?
如果我们希望将产品这一列的每个单元格都能选择 左侧的产品就好了,就像这样 这里使用的是"验证数据有效性"功能 在这里: 点击F,选择F列后,打开“数据验证”,如图,选择序列,选择来 ...
- mysql数据库配置文件
一.数据库配置文件 数据库配置文件是很一个很强大的功能,这是数据库管理员经常需要关注的配置文件. my.ini #这是在windows下的配置文件名称. my.conf #这是在linux下的配置 ...
- SpringBoot+RestTemplate 简单包装
RestTemplate设计是为了Spring更好的请求并解析Restful风格的接口返回值而设计的,通过这个类可以在请求接口时直接解析对应的类. 在SpringBoot中对这个类进行 ...
- c++程序员学习go
作为一个c++程序员学习go编程的笔记.首先声明本人文笔太差,当你阅读一点觉得实在无法阅读下去时请移步. 下载安装go,安装完毕后会增加系统环境变量path内容指定go程序所在目录,可以打开cmd输入 ...
- libcurl同时下载多个文件
#include <errno.h> #include <stdlib.h> #include <string.h> #ifndef WIN32 #include ...