#define int long long voidsolve() { int n, q, tc; cin >> n >> q >> tc; vector<int> t(n + 1); for (int i = 1; i <= n; i++) cin >> t[i]; sort(t.begin() + 1, t.begin() + 1 + n); for (int i = 2; i <= n; i++) t[i] = t[i] + t[i - 1];
while (q--) { int ans = 0, m; cin >> m; // for (int i = n; i >= 0; i--)//暴力 // if ((n - i) * tc <= m) // ans = t[i] + tc; int low = 0,high = n;
while (low <= high) { int mid = low + (high - low) / 2;
if ((n - mid) * tc <= m) { ans = t[mid] + tc; high = mid - 1; } else low = mid + 1; }
intmain(){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n, Q, tc; std::cin >> n >> Q >> tc; std::vector<int> t(n); std::vector<i64> s(n + 1); for (int i = 0; i < n; i++) { std::cin >> t[i]; } std::sort(t.begin(), t.end()); for (int i = 0; i < n; i++) { s[i + 1] = s[i] + t[i]; } while (Q--) { i64 M; std::cin >> M; i64 c = std::min(1LL * n, M / tc); i64 ans = s[n - c] + tc; std::cout << ans << "\n"; } return0; }
voiddfs(int cur, vector<int> &a, vector<int> &rank, vector<pair<int, int>> &matches, int &bestRank) { if (cur == matches.size()) { int zhaJiScore = a[1]; int curRank = 1; for (int i = 2; i < a.size(); i++) { if (a[i] > zhaJiScore) { curRank++; } } bestRank = min(bestRank, curRank); return; }
// 模拟比赛 int x = matches[cur].first; int y = matches[cur].second; int xScore = a[x]; int yScore = a[y]; a[x] += 3; dfs(cur + 1, a, rank, matches, bestRank); a[x] = xScore; a[y] += 3; dfs(cur + 1, a, rank, matches, bestRank); a[y] = yScore; a[x]++; a[y]++; dfs(cur + 1, a, rank, matches, bestRank); a[x] = xScore; a[y] = yScore; }
intmain() { int T; cin >> T; while (T--) { int n, m; cin >> n >> m; vector<int> a(n + 1); for (int i = 1; i <= n; i++) { cin >> a[i]; } vector<pair<int, int>> matches(m); for (int i = 0; i < m; i++) { cin >> matches[i].first >> matches[i].second; }
voidsolve(){ int n, m; std::cin >> n >> m; std::vector<int> a(n); for (int i = 0; i < n; i++) { std::cin >> a[i]; } std::vector<int> u(m), v(m); for (int i = 0; i < m; i++) { std::cin >> u[i] >> v[i]; u[i]--, v[i]--; } int ans = n; auto dfs = [&](auto self, int i) -> void { if (i == m) { int res = 1; for (int j = 0; j < n; j++) { res += (a[j] > a[0]); } ans = std::min(ans, res); return; } for (auto [x, y] : {std::make_pair(3, 0), {0, 3}, {1, 1}}) { a[u[i]] += x; a[v[i]] += y; self(self, i + 1); a[u[i]] -= x; a[v[i]] -= y; } }; dfs(dfs, 0); std::cout << ans << "\n"; }
F 鸡数题
G why 买外卖
鸡很饿,鸡要吃外卖,今天点份炸鸡外卖!
鸡使用的外卖程序有若干个满减优惠,第 i 个优惠可以表示为"满 \(a[i]\) 元减 \(b[i]\) 元",多个满减优惠可以叠加。
voidsolve() { int n, m; cin >> n >> m; vector<pair<int, int>> c(n + 1); for (int i = 1; i <= n; i++) cin >> c[i].first >> c[i].second; sort(c.begin() + 1, c.begin() + 1 + n); for (int i = 2; i <= n; i++) c[i].second = c[i].second + c[i - 1].second;
int ans = 0; for (int i = 1; i <= n; i++) { int pay = c[i].first - c[i].second; if (pay <= m) ans = max(ans, m + c[i].second); } if(!ans) ans = m; cout << ans << '\n'; }
H 01 背包,但是 bit
I It's bertrand paradox.
Again!
J 又鸟之亦心
K 牛镇公务员考试
L 要有光
梯形的面积 \(\to ans=3\times w\times
c\)
我理解错误了题目的意思,原来地面是那面白墙 \(\dots\)
1 2 3 4 5 6
voidsolve() { int c, d, h, w; cin >> c >> d >> h >> w; cout << 3 * w * c <<'\n'; }