#include<iostream> #include<cstring> usingnamespacestd; constint N = 510 , MAX = 1e9 ; int n; int a[N][N] ,f[N][N] ; intmain(){ cin >> n ; for (int i = 1 ; i <= n ; i ++ ) for (int j = 1 ; j <= i ; j ++ ) cin >> a[i][j] ; for (int i = 0 ; i <= n ; i++) for (int j = 0 ; j <= i + 1 ; j ++ ) f[i][j] = -MAX ;
f[1][1] = a[1][1]; for (int i = 2 ; i <= n ; i ++ ) { for (int j = 1;j <= i;j++) { f[i][j] = max (f[i - 1][j - 1],f[i - 1][j]) + a[i][j]; } } int ans = -MAX ; for (int i = 1 ; i <= n ; i ++ ) ans = max (ans , f[n][i] ) ; cout << ans << endl ; }
#include<iostream> #include<cstring> usingnamespacestd; constint N = 510 , MAX = 1e9 ; int n; int a[N][N] ,f[N][N] ; intmain(){ cin >> n ; if(n <= 2){ cout << n << endl ; return0 ; } int a = 0, b = 0, c = 1; for (int i = 1 ; i <= n ; ++ i ) { a = b ; b = c ; c = a + b ; } cout << c << endl ; }
intmain() { int n; while(std::cin >> n) { std::vector<int> a(n); for (int i{}; i != n; ++i) { std::cin >> a[i]; } std::vector<int> ends; for (int v: a) { auto it{ std::upper_bound(ends.begin(), ends.end(), v) }; if (it == ends.end()) { ends.push_back(v); } else { *it = v; } } std::cout << ends.size() << '\n'; }
return0; }
7-6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include<bits/stdc++.h> usingnamespacestd; constint N = 1010; int dp[N] ; int n , m ; int v[N] , w[N] ; intmain(){ cin >> n >> m ; for(int i = 1 ; i <= n ; i ++ ) cin >> v[i] >> w[i] ; for(int i = 1 ; i <= n ; i ++ ){ for(int j = m ; j >= v[i] ; j--){ dp[j] = max(dp[j] , dp[j - v[i]] + w[i] ); } } cout << dp[m] << endl ; }
#include<bits/stdc++.h> usingnamespacestd; constint N = 2010; int n, m; string a , b ; int f[N][N]; intmain(){ cin >> a >> b ; n = a.size() , m = b.size() ; a = "." + a , b = "." + b ;
for (int i = 0; i <= m; i ++ ) f[0][i] = i; for (int i = 0; i <= n; i ++ ) f[i][0] = i;
for (int i = 1; i <= n; i ++ ) for (int j = 1; j <= m; j ++ ) { f[i][j] = min(f[i - 1][j] + 1, f[i][j - 1] + 1); if (a[i] == b[j]) f[i][j] = min(f[i][j], f[i - 1][j - 1]); else f[i][j] = min(f[i][j], f[i - 1][j - 1] + 1); }