题目传送门

看到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的更多相关文章

随机推荐

  1. 关于3d打印

    3d打印技术是20世纪90年代逐渐兴起的一项先进的制造技术.3D打印——three-dimensional printing,简称3dp.又称三维打印或立体打印,最早由美国麻省理工学院于1993年开发 ...

  2. 基于scrapyd爬虫发布总结

    一.版本情况 python以丰富的三方类库取得了众多程序员的认可,但也因此带来了众多的类库版本问题,本文总结的内容是基于最新的类库版本. 1.scrapy版本:1.1.0 D:\python\Spid ...

  3. 执行一条sql语句update多条记录实现思路

    如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?本文以一个示例向大家讲解下如何实现如标题所示的情况,有此需求的朋友可以了解下 通常情况下,我们会使用以下SQL语句来更新字段值: ...

  4. Linux 环境部署记录(三) - Jenkins安装与配置

    Jenkins安装 为了兼容生产环境的jdk1.7版本,从官网得知,Jenkins必须是1.6之前的版本,因此下载jenkins-1.596.3-1.1.noarch.rpm到本地进行安装: #移动到 ...

  5. 铁乐学python_day10_作业

    1.继续整理函数相关知识点,写博客. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def sum_n(*args): sum = 0 for i in args: sum += i r ...

  6. 【Excel】单元格的下拉框是怎么做的?

    如果我们希望将产品这一列的每个单元格都能选择 左侧的产品就好了,就像这样 这里使用的是"验证数据有效性"功能 在这里: 点击F,选择F列后,打开“数据验证”,如图,选择序列,选择来 ...

  7. mysql数据库配置文件

    一.数据库配置文件 数据库配置文件是很一个很强大的功能,这是数据库管理员经常需要关注的配置文件. my.ini  #这是在windows下的配置文件名称. my.conf  #这是在linux下的配置 ...

  8. SpringBoot+RestTemplate 简单包装

        RestTemplate设计是为了Spring更好的请求并解析Restful风格的接口返回值而设计的,通过这个类可以在请求接口时直接解析对应的类.     在SpringBoot中对这个类进行 ...

  9. c++程序员学习go

    作为一个c++程序员学习go编程的笔记.首先声明本人文笔太差,当你阅读一点觉得实在无法阅读下去时请移步. 下载安装go,安装完毕后会增加系统环境变量path内容指定go程序所在目录,可以打开cmd输入 ...

  10. libcurl同时下载多个文件

    #include <errno.h> #include <stdlib.h> #include <string.h> #ifndef WIN32 #include ...