传送门

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

在遥远的未来,小Hi成为了地球联邦外空间联合开发工作组的一员,前往一颗新发现的星球开发当地的重金属资源。

为了能够在当地生存下来,小Hi首先要建立一个基地。建立基地的材料可以直接使用当地的石材和富裕的重金属资源。基地建设分为N级,每一级都需要达成K的建设值后才能够完成建设,当前级别的建设值溢出后不会影响到下一级的建设。

小Hi可以产出的重金属资源按照精炼程度分为M级,根据开采的数量和精炼的工艺,可以将获取精炼程度为第i级的重金属资源的成本量化为Ai

在建设第1级基地时,一块精炼度为i的重金属可以提供Bi的建设值,此后基地的级别每提高一级,建设值将除以T并下取整(整除)。

现给定N、M、K、T、A[]和B[],小Hi需要你帮助他计算他完成基地建设的最小成本。

输入

输入包含多组测试数据。

输入的第一行为一个整数Q,表示测试数据的组数。

每组测试数据的第一行为4个整数N、M、K和T,意义如前文所述。

接下来的一行为M个整数,分别表示A1~AM

接下来的一行为M个整数,分别表示B1~BM

对于100%的数据,满足1<=N<=10,1<=M<=100,1<=K,T<=104

对于100%的数据,满足Ai和Bi均为32位整型范围内的正整数

对于100%的数据,满足1<=Q<=10

输出

对于每组测试数据,如果小Hi最终能够完成基地建设,则输出小Hi完成基地建设所需要的最小成本,否则输出“No Answer”。

样例输入
2
2 2 2 2
1 3
1 2
2 2 2 2
1 2
1 1
样例输出
   8
   No Answer

Solution:
DP。
各级基地的建设相互独立,建设某一级基地的最小成本是一个类多重背包问题:
$dp[i][j]表示利用前i级重金属资源获得至少j建设值所需的最小成本,转移方程:$
\[dp[i][j]=min(dp[i-1][j], dp[i][j-b[i]]+a[i])\]

Implementation:
由于DP状态中有“至少”二字,不能直接采用上面的转移方程(但这并不意味着它是错的),而是需要调整一下转移的方式(注意:是“方式”而非“方向”):
$从前一状态推到后一状态, 即从dp[i][j]推到dp[i+1][j]和dp[i][min(j+b[i], K)].$
 
 
#include <bits/stdc++.h>
using namespace std;
typedef long long LL; const int M(), K(1e4+);
LL dp[M][K], INF=1LL<<;
int a[M], b[M]; void upd(LL &x, LL y){
x=~x?min(x, y):y;
} int main(){
int T, n, m, k, t;
for(cin>>T; T--; ){
cin>>n>>m>>k>>t;
for(int i=; i<=m; i++) cin>>a[i];
for(int i=; i<=m; i++) cin>>b[i];
LL ans=;
bool f=true;
for(int i=; i<n; i++){
memset(dp, -, sizeof(dp));
for(int i=; i<=m; i++) dp[i][]=;
for(int i=; i<=m; i++)
for(int j=; j<=k; j++)
if(~dp[i][j]){
if(i<m) upd(dp[i+][j], dp[i][j]);
if(i) upd(dp[i][min(k, j+b[i])], dp[i][j]+a[i]);
}
if(~dp[m][k]) ans+=dp[m][k];
else{f=false; break;}
for(int i=; i<=m; i++) b[i]/=t;
}
if(f) cout<<ans<<endl; else puts("No Answer");
}
return ;
}

hihocoder #1270 建造基地的更多相关文章

  1. hihoCoder #1157 建造金字塔

    这道题我想了一天才想清楚做法.AC 了之后去看别人写的题解,都是三言两语意识流式描述,我并不能读懂.我觉得很自卑,为何人家解这道题如此轻松.不过,我还是决定把我的解法写下来,并且一定要写清楚. 思路 ...

  2. hiho1270 建造基地([Offer收割]编程练习赛1)

    题目意思很简单, 一道类似于背包的问题,问恰好超过背包容量的最小取值.并且需要计算n次,每计算一次都要将所有的物品的价值w[i] /= t,最后输出背包n次的总使用容量. 如果无法实现输出”No An ...

  3. [Offer收割] 编程练习赛1

    A HihoCoder 1268 九宫 思路: 一般类似于数独的题目都是使用回溯解决,这里由于题目数据较小同样可以直接DFS得出结果.这里我用了一个偷懒的方法(next_permutation),直接 ...

  4. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

    比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...

  5. hihoCoder[Offer收割]编程练习赛1题目解析

    题目1 : 九宫 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Hi近期在教邻居家的小朋友小学奥数.而近期正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不反 ...

  6. HDU1173

    采矿 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  7. 8F - 采矿

    某天gameboy玩魔兽RPG.有一个任务是在一个富含金矿的圆形小岛上建一个基地,以最快的速度采集完这个小岛上的所有金矿.这个小岛上有n(0<n<1000000)个金矿,每个金矿的矿藏量是 ...

  8. HDU 1173 思路题

    题目大意 有n个地点(坐标为实数)需要挖矿,让选择一个地点,使得在这个地方建造基地,到n个地点的距离和最短,输出基地的坐标. 题解+代码: 1 /* 2 把这个二维分开看(即把所有点投影到x轴上,再把 ...

  9. Linux就这个范儿 第19章 团结就是力量 LSB是Linux标准化基地(Linux Standards Base)的简称

    Linux就这个范儿 第19章 团结就是力量  LSB是Linux标准化基地(Linux Standards Base)的简称 这个图片好可爱,它是LSB组织的图标.你肯定会问:“图标这么设计一定有说 ...

随机推荐

  1. Android优化——UI优化(二) 使用include标签复用布局

    使用include标签复用布局 - 1.include标签的作用 假如说我下图的这个布局在很多界面都用到了,我该怎么办?每个页面都写一遍的话,代码太冗余,并且维护难度加大. <LinearLay ...

  2. ubuntu手贱改了sudoers权限之后的恢复

    sudo 这个命令是ubuntu系统是用的最多的(和其他大众版linux系统比起来),而一个普通用户是否有sudo权限来临时切换到root用户来执行“一行”命令取决于 /etc/sudoers的配置, ...

  3. Java NIO 概述

    Channel 和 Buffer 标准的Java IO编程接口是面向字节流和字符流的 而 NIO 是面向通道和缓冲区的 数据总是从通道中读到Buffer中,或者从Buffer写入通道中 NIO可以理解 ...

  4. RDLC系列之五 初试XAML

    本章只讲解xaml部分,其余都和winform下一样 1.xaml代码 <Window x:Class="RDLC.WPF.MainWindow" xmlns="h ...

  5. 【转】【C#】SendMessage

    SendMessage是一个在user32.dll中声明的API函数,在C#中导入如下: using System.Runtime.InteropServices; [DllImport(" ...

  6. 1017. A除以B (20)

    本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入格式: 输入在1行中依次给出A和B,中间以1空格分隔. 输出格 ...

  7. android Camera 中添加一种场景模式

    转自:http://blog.csdn.net/fulinwsuafcie/article/details/8833652 首先,来了解一下什么是场景模式. 最简单的方法当然是google了,这里有一 ...

  8. HTTP基础(一):如何使用浏览器network查看请求和响应的信息

    一. 问题描述 HTTP作为前端开发与后开发链接的载体,其重要性不言而喻,今天我不复习关于HTTP自身的一些知识,只复习如何解读浏览器自带的的抓包工具(查看请求信息与响应信息)network. 二. ...

  9. bisController

    public class BisController : Controller { // // GET: /Bis/ protected string GetJson(object obj) { Is ...

  10. 2015年新版C#从入门到精通(第2版)视频教学录像【无水印版】

    <c#从入门到精通(第2版)>以零基础讲解为宗旨,用实例引导读者学习,深入浅出地介绍了c#的相关知识和实战技能.<c#从入门到精通(第2版)>第1篇[c#语言基础]主要讲解c# ...