[BOJ][C++] ė°±ģ¤ 12865ė²: ķė²ķ ė°°ė
https://www.acmicpc.net/problem/12865
12865ė²: ķė²ķ ė°°ė
첫 ģ¤ģ 물ķģ ģ N(1 ≤ N ≤ 100)ź³¼ ģ¤ģź° ė²ķø ģ ģė ė¬“ź² K(1 ≤ K ≤ 100,000)ź° ģ£¼ģ“ģ§ė¤. ė ė²ģ§ø ģ¤ė¶ķ° Nź°ģ ģ¤ģ ź±°ģ³ ź° ė¬¼ź±“ģ ė¬“ź² W(1 ≤ W ≤ 100,000)ģ ķ“ė¹ ė¬¼ź±“ģ ź°ģ¹ V(0 ≤ V ≤ 1,000)
www.acmicpc.net
문ģ
ģ“ ė¬øģ ė ģ주 ķė²ķ ė°°ėģ ź“ķ 문ģ ģ“ė¤.
ķ ė¬ ķė©“ źµź°ģ ė¶ė¦ģ ė°ź² ėė ģ¤ģė ģ¬ķģ ź°ė ¤ź³ ķė¤. ģøģź³¼ģ ėØģ ģ ģ¬ķ¼ķė©° ģµėķ ģ¦źø°źø° ģķ ģ¬ķģ“źø° ė문ģ, ź°ģ§ź³ ė¤ė ė°°ė ėķ ģµėķ ź°ģ¹ ģź² ģøė ¤ź³ ķė¤.
ģ¤ģź° ģ¬ķģ ķģķė¤ź³ ģź°ķė Nź°ģ ė¬¼ź±“ģ“ ģė¤. ź° ė¬¼ź±“ģ ė¬“ź² Wģ ź°ģ¹ V넼 ź°ģ§ėė°, ķ“ė¹ ė¬¼ź±“ģ ė°°ėģ ė£ģ“ģ ź°ė©“ ģ¤ģź° Vė§ķ¼ ģ¦źøø ģ ģė¤. ģģ§ ķźµ°ģ ķ“ė³ø ģ ģ“ ģė ģ¤ģė ģµė Kė§ķ¼ģ 묓ź²ė§ģ ė£ģ ģ ģė ė°°ėė§ ė¤ź³ ė¤ė ģ ģė¤. ģ¤ģź° ģµėķ ģ¦ź±°ģ“ ģ¬ķģ ķźø° ģķ“ ė°°ėģ ė£ģ ģ ģė 물걓ė¤ģ ź°ģ¹ģ ģµėź°ģ ģė ¤ģ£¼ģ.
ģ ė „
첫 ģ¤ģ 물ķģ ģ N(1 ≤ N ≤ 100)ź³¼ ģ¤ģź° ė²ķø ģ ģė ė¬“ź² K(1 ≤ K ≤ 100,000)ź° ģ£¼ģ“ģ§ė¤. ė ė²ģ§ø ģ¤ė¶ķ° Nź°ģ ģ¤ģ ź±°ģ³ ź° ė¬¼ź±“ģ ė¬“ź² W(1 ≤ W ≤ 100,000)ģ ķ“ė¹ ė¬¼ź±“ģ ź°ģ¹ V(0 ≤ V ≤ 1,000)ź° ģ£¼ģ“ģ§ė¤.
ģ ė „ģ¼ė” 주ģ“ģ§ė ėŖØė ģė ģ ģģ“ė¤.
ģ¶ė „
ķ ģ¤ģ ė°°ėģ ė£ģ ģ ģė 물걓ė¤ģ ź°ģ¹ķ©ģ ģµėź°ģ ģ¶ė „ķė¤.
ķģ“1 - 2ģ°Øģ dp
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
struct info {
int w, v;
};
int knapback(int n, int k, vector<info> &product) {
vector<vector<int>> dp(n+1, vector<int>(k+1, 0));
for(int i=1; i<=n; i++) {
for(int j=0; j<product[i].w; j++) {
dp[i][j] = dp[i-1][j];
}
for(int j=product[i].w; j<=k; j++) {
dp[i][j] = max(dp[i-1][j-product[i].w] + product[i].v, dp[i-1][j]);
}
}
return dp[n][k];
}
int main() {
int n, k;
cin >> n >> k;
vector<info> product(n+1,{0,0});
for(int i=1; i<=n; i++)
cin >> product[i].w >> product[i].v;
cout << knapback(n, k, product);
return 0;
}
/*
*/
ķģ“2 - 1ģ°Øģ dp
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
struct info {
int w, v;
};
int knapback(int n, int k, vector<info> &product) {
vector<int> dp(k+1, 0);
for(int i=1; i<=n; i++)
for(int j=k; j>=product[i].w; j--)
dp[j] = max(dp[j-product[i].w] + product[i].v, dp[j]);
return dp[k];
}
int main() {
int n, k;
cin >> n >> k;
vector<info> product(n+1,{0,0});
for(int i=1; i<=n; i++)
cin >> product[i].w >> product[i].v;
cout << knapback(n, k, product);
return 0;
}
/*
*/
25.04.30
// ķģ“ : https://whkakrkr.tistory.com
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> ci;
int main() {
ios_base::sync_with_stdio(false);
cout.tie(NULL);
cin.tie(NULL);
// input
int n, k;
cin >> n >> k;
vector<ci>wv(n);
for(int i=0; i<n; i++) {
int w,v;
cin >> w >>v;
wv[i] = {w,v};
}
// solution
sort(wv.begin(), wv.end());
vector<int>dp(k+1, 0);
for(int i=0; i<n; i++) {
int w = wv[i].first;
int v = wv[i].second;
for(int j=k; j>=w; j--) {
dp[j] = max(dp[j-w] + v, dp[j]);
}
}
// output
int ans = *max_element(dp.begin(), dp.end());
cout << ans;
return 0;
}