AcWing 第 1 场周赛补题记录(A~C)
比赛链接:Here
AcWing 3577. 选择数字
排序,然后选取两个数组的最大值
void solve() {
int n; cin >> n;
vector<int>a(n);
for (int &x : a)cin >> x;
int m; cin >> m;
vector<int>b(m);
for (int &x : b)cin >> x;
sort(a.begin(), a.end());
sort(b.begin(), b.end());
cout << a[n - 1] << " " << b[m - 1] << "\n";
}
AcWing 3578. 最大中位数
因为我们要让中位数最大,所以对前面 n>>1
的数可以不用管,然后我们每次让最小的数+到第二小看看可不可以加到如果不可以就把剩余的k平均分给最小数,如果可以加就加到第二小然后以此类推
using ll = long long;
const int N = 2e5 + 10, mod = 1e9 + 7;
ll a[N], sum[N];
int main() {
int n;
ll k;
cin >> n >> k;
for (int i = 1; i <= n; i ++ ) {
cin >> a[i];
}
sort(a + 1, a + 1 + n);
int pos = n / 2 + 1;//中位数所在位置
for (int i = 1; i <= n; i ++ ) {
sum[i] = sum[i - 1] + a[i];
}
ll res = a[pos];
for (int i = pos; i <= n; i ++ ) {
ll more = k + (sum[i] - sum[pos - 1]);
ll num = more / (i - pos + 1);
if (num < a[i]) break;
if (i < n) num = min(num, a[i + 1]);
res = max(res, num);
}
cout << res;
}
AcWing 3579. 数字移动
C 题 眨眼一看,我去!好难!这怎么写!其实仔细读题之后,会发现,此题就是找闭环过程,剩最后10分钟,糊出来了。
解题思路:因为在闭环上的点操作数都是一样的,1->2;2->3;3->4;4->1 他们的操作数都是一样的都是4,所以直接模拟就好啦。
const int N = 2e5 + 10, mod = 1e9 + 7; // 注意数据范围是 2e5
int a[N], q[N], res[N], n, t;
bool f[N];
void solve() {
cin >> n;
for (int i = 1; i <= n; ++i )cin >> a[i];;
for (int i = 1; i <= n; ++i )f[i] = false;
for (int i = 1; i <= n; ++i) {
if (f[i]) continue;
int j = i, top = 1, cnt = 0;
do {f[j] = true, j = a[j]; q[top++] = j, cnt++;} while (!f[j]);
for (int k = 1; k < top; ++k)res[q[k]] = cnt;
}
for (int i = 1; i <= n; ++i)cout << res[i] << " ";
cout << "\n";
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战