原题链接
最大连续子序列和题目类型:动态规划
#include二叉树形态总数#include #include #include using namespace std; int n; #define NMAX 1000006 int num[NMAX]; vector dp; long long res; int main() { cin >> n; memset(&res, 0xff, sizeof(res)); for (int i = 0; i < n; i++) cin >> num[i]; dp.push_back(num[0]); for (int i = 1; i < n; i++) { long long cur = max((long long)num[i], num[i] + dp[i - 1]); dp.push_back(cur); res = max(res, cur); } cout << res << endl; }
题目类型:动态规划
#include解方程#include #include #include using namespace std; int n; #define NMAX 1003 long long dp[NMAX]; int main() { cin >> n; memset(dp, 0, sizeof(dp)); dp[1] = 1; dp[0] = 1; for (int i = 2; i <= n; i++) { for (int j = 0; j <= i-1; j++) { dp[i] += dp[j] * dp[i-1 - j]; } } cout << dp[n] << endl; }
题目类型:模拟
#include#include #include #include using namespace std; int n; #define NMAX 1003 typedef long long LL; LL var[2], val[2]; int pos; char c; int symbol = 1, num = 0, is = 0; int main() { memset(var, 0, sizeof(var)); memset(val, 0, sizeof(val)); pos = 0; while ((c = getchar()) != 'n') { if (c == 'x') { is = 1; if (num == 0) num = 1;//注意处理只有x时前面没有数字的情况 } else if (c == '-' || c=='+' || c=='=') { if (is) var[pos] += num * symbol; else val[pos] += num * symbol; if (c == '-') symbol = -1; else symbol = 1; num = 0; is = 0; if (c == '=') { pos = 1; } } else { num = num * 10 + c - '0'; } } //最后的调试 if (is) var[pos] += num * symbol; else val[pos] += num * symbol; long long rvar = var[0] - var[1]; long long rval = val[1] - val[0]; if (rvar == rval && rvar == 0) cout << "infinite solutions" << endl; else if (rvar == 0 && rvar != 0) cout << "no solution" << endl; else cout << "x=" << rval / rvar << endl; }



