[Offer收割]程式設計練習賽1 hihocoder 1270 建造基地 (完全揹包)
時間限制: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
題目連結:http://hihocoder.com/problemset/problem/1270
題目分析:比較裸的完全揹包,dp[i]表示建設值為i時的最小成本
#include <cstdio>
#include <algorithm>
#define ll long long
using namespace std;
int const INF = (1 << 30);
int const MAX = 1e4 + 5;
int n, m, k, t;
int a[105], b[105];
ll dp[MAX];
int main()
{
int T;
scanf("%d", &T);
while(T --)
{
scanf("%d %d %d %d", &n, &m, &k, &t);
for(int i = 1; i <= m; i++)
scanf("%d", &a[i]);
for(int i = 1; i <= m; i++)
scanf("%d", &b[i]);
ll ans = 0;
bool flag = true;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < MAX; j++)
dp[j] = INF;
dp[0] = 0;
ll cur = INF;
for(int j = 1; j <= m; j++)
{
for(int l = 0; l <= k; l++)
{
if(b[j] + l > k)
cur = min(cur, dp[l] + a[j]);
else
dp[b[j] + l] = min(dp[b[j] + l], dp[l] + a[j]);
}
}
cur = min(cur, dp[k]);
if(cur == INF)
{
flag = false;
printf("No Answer\n");
break;
}
ans += cur;
for(int j = 1; j <= m; j++)
b[j] /= t;
}
if(flag)
printf("%lld\n", ans);
}
}
相關文章
- [Offer收割]程式設計練習賽1 hihocoder 1268 九宮 (DFS)程式設計
- [Offer收割]程式設計練習賽2 hihocoder 1273 (DFS + 狀壓)程式設計
- [Offer收割]程式設計練習賽1 hihocoder 1271 艦隊遊戲 (狀態壓縮+貪心 好題)程式設計遊戲
- [Offer收割]程式設計練習賽2 hihocoder 1275 掃地機器人 (計算幾何+模擬 比較煩)程式設計機器人
- [Offer收割]程式設計練習賽2 hihocoder 1272 買零食 (DFS 或 dp 水題)程式設計
- [Offer收割]程式設計練習賽1 hihocoder 1269 優化延遲 (二分+優先權佇列)程式設計優化佇列
- hihocoder 1285 智力競賽 (類多重揹包)
- 揹包DP——完全揹包
- 分組揹包、完全揹包
- 01揹包、完全揹包、多重揹包詳解
- 揹包問題(01揹包與完全揹包)
- 【程式碼隨想錄】完全揹包
- dp-完全揹包
- 團體程式設計天梯賽-練習集程式設計
- 程式設計假期練習題--1程式設計
- javascript演算法基礎之01揹包,完全揹包,多重揹包實現JavaScript演算法
- 團體程式設計天梯賽-練習集 L1-038 新世界程式設計
- 網易實習2019程式設計題 牛牛揹包程式設計
- 程式設計實踐(Pandas)綜合練習1程式設計
- 程式設計練習程式設計
- 南沙C++信奧賽陳老師解一本通題 1270:【例9.14】混合揹包C++
- 從【零錢兌換】問題看01揹包和完全揹包問題
- 演算法-動態規劃-完全揹包演算法動態規劃
- Python 程式設計練習Python程式設計
- 揹包DP——混合揹包
- Codeup 貨幣系統(完全揹包問題)
- 團體程式設計天梯賽-練習集 L1-050 倒數第N個字串 (15分)程式設計字串
- 設計模式學習-建造者模式設計模式
- 程式設計假期練習題--2程式設計
- 程式設計假期練習題--3程式設計
- 第二週程式設計練習程式設計
- PIPIOJ 1079: PIPI的存錢罐 完全揹包
- 揹包
- 關於程式設計的基本練習程式設計
- [C練習]程式設計實現strstr程式設計
- RecyclerView 效能優化 | 安卓 offer 收割基View優化安卓
- 01揹包、有依賴的揹包
- 藍橋杯 演算法提高 拿糖果(完全揹包dp)演算法