A Winged Steed
生活随笔
收集整理的這篇文章主要介紹了
A Winged Steed
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Description
有nn種千里馬,每一種都有若干匹,第ii種馬的顏值a_ia
i
? ,價格d_id
i
? .現(xiàn)有mm個牧馬人要去挑選千里馬,每一位牧馬人對馬的顏值都有要求:{所選馬的顏值總和} \geqslant A_i?A
i
? .現(xiàn)在讓你來為牧馬人做滿足要求的最低預(yù)算.
Input
單組測試數(shù)據(jù),第一行兩個整數(shù)n,mn,m,( 1 \leq n,m \leq 1e4)(1≤n,m≤1e4).
接下來nn行,每行兩個整數(shù)a_1,d_1,a_2,d_2,…a_n,d_na
1
? ,d
1
? ,a
2
? ,d
2
? ,…a
n
? ,d
n
? .
最后一行mm個整數(shù)A_1,A_2,…A_mA
1
? ,A
2
? ,…A
m
? ,( 1 \leq a_i,d_i,A_i \leq 1e4)(1≤a
i
? ,d
i
? ,A
i
? ≤1e4).
Output
輸出mm個整數(shù)占一行,用空格隔開,表示每一位牧馬人的最低花費.
Sample Input 1
2 2
1 2
2 1
5 5
Sample Output 1
3 3
#include <stdio.h> #include <math.h> #include <string.h> #include <algorithm> using namespace std; #define met(s) memset(s, 0, sizeof(s)) #define rep(i, a, b) for(int i = a; i <= b; ++i) typedef long long LL; typedef unsigned long long ull; typedef pair<int, int> pii; const int INF = 0x3f3f3f3f; const int mod = 1e9 + 7; const int MAXN = 1e4 + 10; int A[MAXN]; int a[MAXN], d[MAXN]; int dp[MAXN];int main() { // freopen("5.in", "r", stdin); // freopen("5.out", "w", stdout);int n, m;scanf("%d %d", &n, &m);for(int i = 0; i < n; ++i) scanf("%d %d", &a[i], &d[i]);dp[0] = 0;for(int i = 1; i <= 10005; ++i) {dp[i] = INF;for(int j = 0; j < m; ++j) {if(i <= a[j]) dp[i] = min(d[j], dp[i]);else dp[i] = min(dp[i], dp[i - a[j]] + d[j]);}}for(int i = 0; i < m; ++i) {scanf("%d", &A[i]);printf("%d%c", dp[A[i]], (i == m - 1) ? '\n' : ' ');}return 0; }總結(jié)
以上是生活随笔為你收集整理的A Winged Steed的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 了解SPI总线CAN控制器 MCP251
- 下一篇: 插入损耗——线对上的信号衰减