T1:序列最大公约数
枚举 即可
代码实现
#include <bits/stdc++.h> using namespace std; int main() { int n, s; cin >> n >> s; int ans = 0; for (int i = 1; i*i <= s; ++i) { if (s%i != 0) continue; if (i >= n) ans = max(ans, s/i); if (s/i >= n) ans = max(ans, i); } cout << ans << '\n'; return 0; }
双倍经验:CF803C
T2:最长回文
经典区间 题
记 dp[i][j]
表示对于字符串 的子串 s[i:j]
删除若干字符使得 s[i:j]
变成回文串最少需要删除的字符数
代码实现
#include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; int n = s.size(); vector dp(n, vector<int>(n)); for (int span = 2; span <= n; ++span) { for (int i = 0; i <= n-span; ++i) { int j = i+span-1; dp[i][j] = min(dp[i+1][j], dp[i][j-1]) + 1; if (s[i] == s[j]) { dp[i][j] = min(dp[i][j], dp[i+1][j-1]); } } } cout << dp[0][n-1] << '\n'; return 0; }
T3:香槟塔
注意到,当香槟杯已经满了的话,对我们来说就没用了,我们可以用 std::set
来维护还没有装满的香槟杯,如果装满了就从 std::set
中移除即可
对于操作 1
,我们可以利用 std::set
二分找到 的最小的位置,然后直接跳到这个位置来模拟即可,而不需要再从 开始
代码实现
#include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; int main() { int n; cin >> n; vector<int> w(n); rep(i, n) cin >> w[i]; set<int> s; rep(i, n) s.insert(i); int q; cin >> q; vector<int> ans(n); rep(qi, q) { char type; int x; cin >> type >> x; --x; if (type == 'A') { int y; cin >> y; auto it = s.lower_bound(x); while (it != s.end() and y) { int i = *it; int d = min(y, w[i]-ans[i]); y -= d; ans[i] += d; if (ans[i] == w[i]) s.erase(it++); } } else { cout << ans[x] << '\n'; } } return 0; }
双倍经验:CF371D
T4:极值的和
我们可以固定每个数 ,并以 作为最大值,求以 为最大值的区间个数,那么我们只需找到距离 左边最近的大于它的位置以及右边最近的大于它的位置即可,不妨记做 和
然后,根据乘法原理,以 为最大值的区间个数就是
对于 和 可以用单调栈来求
于是
代码实现
#include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; using ll = long long; int main() { int n; cin >> n; vector<ll> a(n); rep(i, n) cin >> a[i]; vector<int> l(n), r(n, n); stack<int> s; rep(i, n) { while (s.size() and a[s.top()] <= a[i]) { r[s.top()] = i; s.pop(); } l[i] = !s.size() ? -1 : s.top(); s.push(i); } ll ans = 0; rep(i, n) { ans += ll(i-l[i])*(r[i]-i)*a[i]; } cout << ans << '\n'; return 0; }
双倍经验:P6503
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异