牛客小白月赛109
A. Onewan的疑惑
题意:找有多少小于等于
移项可得
点击查看代码
void solve() {
i64 n;
std::cin >> n;
i64 m = std::max(1ll, n - 114514 - 19260817);
std::cout << n - m + 1 << "\n";
}
B. 菲菲姐的游戏
把数组分成两个连续的子数组,你可以在左边选至多
显然每个人都最多选一个数,因为多个数的平均值不会大于最大值,中位数也不会大于最大值,所以枚举分开点,比较两边最大值就行了。
点击查看代码
void solve() {
int n, x, y;
std::cin >> n >> x >> y;
std::vector<int> a(n);
for (int i = 0; i < n; ++ i) {
std::cin >> a[i];
}
std::vector<int> suf(n + 2);
for (int i = n - 1; i >= 0; -- i) {
suf[i + 1] = std::max(suf[i + 2], a[i]);
}
int max = 0;
for (int i = 0; i + 1 < n; ++ i) {
max = std::max(max, a[i]);
if (max > suf[i + 2]) {
std::cout << "Yes\n";
return;
}
}
std::cout << "No\n";
}
C. 猪猪养成计划1
题意:
用
点击查看代码
void solve() {
int n, q;
std::cin >> n >> q;
std::vector<int> ans(n + 1);
std::set<int> s;
for (int i = 1; i <= n; ++ i) {
s.insert(i);
}
int cnt = 0;
while (q -- ) {
int op, x, y;
std::cin >> op >> x;
if (op == 1) {
std::cin >> y;
auto it = s.lower_bound(x);
std::vector<int> b;
while (it != s.end() && *it <= y) {
ans[*it] = ++ cnt;
b.push_back(*it);
++ it;
}
for (auto & z : b) {
s.erase(z);
}
} else {
std::cout << ans[x] << "\n";
}
}
}
D. 猪猪养成计划2
题意:有
考虑
除此外,我们也可以一头都不陪伴,那么是
点击查看代码
void solve() {
int n, m;
std::cin >> n >> m;
std::vector<i64> sum(n + 1);
std::vector<std::vector<std::pair<i64, i64> > > op(n + 1);
std::vector<i64> a(n), v(n), b(n);
for (int i = 0; i < n; ++ i) {
std::cin >> a[i];
}
for (int i = 0; i < n; ++ i) {
std::cin >> b[i] >> v[i];
sum[a[i] + m - 1] += v[i];
op[a[i] + m - 1].push_back({b[i], v[i]});
}
for (int i = 1; i <= n; ++ i) {
sum[i] += sum[i - 1];
}
std::vector<i64> f(n + 1, 1e18);
f[0] = 0;
i64 ans = 1e18;
for (int i = 1; i <= n; ++ i) {
for (auto & [b, v] : op[i]) {
int l = std::max(1, i - m + 1);
f[i] = std::min(f[i], f[l - 1] + sum[i] - sum[l - 1] - v + b);
}
f[i] = std::min(f[i], f[i - 1] + sum[i] - sum[i - 1]);
}
std::cout << f[n] << "\n";
}
E. min25筛
题意:给你一个数组,
求
观察发现,
我们先把所有
那么如果
如果
点击查看代码
const int mod = 1e9 + 7;
i64 pow(i64 a, i64 b, i64 p) {
i64 res = 1;
while (b) {
if (b & 1) {
res = res * a % p;
}
a = a * a % p;
b >>= 1;
}
return res;
}
void solve() {
int n;
std::cin >> n;
std::vector<i64> a(n);
for (int i = 0; i < n; ++ i) {
std::cin >> a[i];
}
i64 sum[2] = {0, 0};
i64 ans = 0, inv = pow(25, mod - 2, mod);
for (int i = n - 1; i >= 0; -- i) {
while (a[i] % 25 == 0) {
a[i] /= 25;
}
if (a[i] % 5 == 0) {
sum[0] = sum[0] * a[i] % mod;
sum[1] = sum[1] * a[i] % mod * inv % mod;
std::swap(sum[0], sum[1]);
sum[1] = (sum[1] + a[i]) % mod;
} else {
sum[0] = sum[0] * a[i] % mod;
sum[1] = sum[1] * a[i] % mod;
sum[0] = (sum[0] + a[i]) % mod;
}
ans = (ans + sum[0] + sum[1]) % mod;
}
std::cout << ans << "\n";
}
分类:
牛客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具