Codeforces Round 994 (Div. 2) (D-F)
answer page
还有好多没补,但是既然赛时写出了e就应该去补f,不进则退
这场没开排行榜埋头苦写第一次赛时出e了,也是第一次500名,可喜可贺//(虽然d不会)
D
想了一个n4做法,状态设计为
思考能否忽略k。发现可行,状态设计变为必须选择pos在j位置,转移变为从
#include <bits/stdc++.h> using i64 = long long; using u64 = unsigned long long; using u32 = unsigned; using u128 = unsigned __int128; constexpr int N = 2e2 + 10; constexpr i64 inf = 1e18; #define lowbit(x) (x & (-x)) #define pii pair<int, int> #define mkp make_pair #define vi std::vector<i64> i64 n, k, m; bool flg[N]; void solve() { std::cin >> n >> m >> k; std::vector<vi> a(n + 1, vi(m + 1)), g(n + 1, vi(m + 1)); vi f(m + 1, inf); for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) std:: cin >>a[i][j]; f[1] = 0; // pre for (int i = 1; i <= n; i++) { vi tmp(m + 1, inf); for (int sf = 0; sf < m; sf++) { vi nw(m + 1, inf); for (int j = 1; j <= m; j++) { int _a = a[i][(sf + j - 1) % m + 1]; nw[j] = std::min(nw[j - 1], f[j] + 1ll * sf * k) + _a; tmp[j] = std::min(tmp[j], nw[j]); } } f = tmp; } std::cout << f[m] << '\n'; } signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int T = 1; std::cin >> T; while (T--) { solve(); } return 0; }
E
#include <bits/stdc++.h> using namespace std; const int N = 2e2 + 10; #define lowbit(x) (x & (-x)) // #define endl '\n' #define int long long #define pii pair<int, int> #define mkp make_pair #define LL long long int n, k, m, mu[N], p[N], tot, C[N], w[N], a[N]; bool flg[N]; int que(int l, int r) { cout << "? " << l << ' ' << r << endl; int x; cin >> x; return x; } void solve() { cin >> n; int l = 1, r = n, mid = (l + r) / 2; int ql = que(l, mid), qr; int q1 = ql; // 1 zuo if (ql) r = mid; else l = mid + 1; mid = (l + r) / 2; ql = que(l, mid), qr = que(mid + 1, r); // mid < n / 2 if (ql == qr) { qr = l; if (ql) r = mid; else l = mid + 1; mid = (l + r) / 2; while(l < r) { ql = que(qr, mid); if (ql) r = mid; else l = mid + 1; mid = (l + r) / 2; } cout << "! "<< mid - qr + 1 << endl; } else { if (q1) { l = n / 2 + 1, r = n, mid = (l + r) / 2; while(l < r) { ql = que(1, mid); if (ql) l = mid + 1; else r = mid; mid = (l + r) / 2; } cout <<"! "<< mid << endl; } else { l = 1, r = n / 2, mid = (l + r + 1) / 2; while(l < r) { ql = que(mid, n); if (ql) r = mid - 1; else l = mid; mid = (l + r + 1) / 2; } cout << "! "<<n - mid + 1 << endl; } } } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T = 1; cin >> T; while (T--) { solve(); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话