This commit is contained in:
e2hang
2025-09-15 22:16:09 +08:00
parent eea1a643fb
commit e9519e8558
19 changed files with 513 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
typedef long long ll;
int main(){
ll t, m;
cin >> t >> m;
vector<pair<ll, ll>> arr(m);
vector<ll> dp(t + 1, 0);
for (int i = 0; i < m; i++) {
cin >> arr[i].first >> arr[i].second;
}
//״̬-> dp[i] = max(dp[i - time[i]] + value[i])
for(int i = 1; i < t + 1; i++){
for(int j = 0; j < m; j++){
if(i - arr[j].first >= 0) dp[i] = max(dp[i], dp[i - arr[j].first] + arr[j].second);
}
}
cout << dp[t] << endl;
return 0;
}

View File

@@ -0,0 +1,40 @@
//1<><31>״̬<D7B4>Լ<EFBFBD>״̬ת<CCAC><D7AA> -> <20><><EFBFBD><EFBFBD>
//2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD> -> ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD>
//3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF>ܲ<EFBFBD><DCB2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD>
//4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int minEditDistance(const string& a, const string& b) {
int m = a.size(), n = b.size();
// dp[i][j]<5D><>ʾA[0:i]<5D><>B[0:j]<5D><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));
// <20><>ʼ<EFBFBD><CABC><EFBFBD>߽<EFBFBD>
for (int i = 0; i <= m; ++i) dp[i][0] = i; // ɾ<><C9BE>i<EFBFBD><69><EFBFBD>ַ<EFBFBD>
for (int j = 0; j <= n; ++j) dp[0][j] = j; // <20><><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD>ַ<EFBFBD>
// ״̬ת<CCAC><D7AA>
for (int i = 1; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
if (a[i-1] == b[j-1]) {
dp[i][j] = dp[i-1][j-1]; // ƥ<><EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} else {
dp[i][j] = min({dp[i-1][j-1], dp[i-1][j], dp[i][j-1]}) + 1; // <20><EFBFBD><E6BBBB>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
}
return dp[m][n];
}
int main() {
string a, b;
getline(cin, a); // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>A
getline(cin, b); // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>B
cout << minEditDistance(a, b) << endl; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return 0;
}

View File

@@ -0,0 +1,26 @@
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, w;
cin >> n >> w;
vector<int> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
vector<int> dp(w + 1, 1e9);
dp[0] = 0;
for (int j = 0; j < n; j++) {
for (int i = a[j]; i <= w; i++) {
dp[i] = min(dp[i], dp[i - a[j]] + 1);
}
}
if (dp[w] == 1e9) cout << -1 << endl; // <20>޽<EFBFBD>
else cout << dp[w] << endl;
return 0;
}