9.10 模拟赛(炼石计划 11 月 15日 CSP-S 十连测 #10)
炼石计划 11 月 15日 CSP-S 十连测 #10【补题】 - 比赛 - 梦熊联盟 (mna.wang)
复盘
所有题先都浏览了一遍。其中 T1 见过。但当时是乱搞过的。但怎么乱搞的忘了。
那就先做 T1。有
中间看了一眼 T3。想了一分钟左右就会做了。这是一个很多套路集合的题。于是先放 T1 写 T3。
代码很短(40 行)。调了一小会就过了样例。时间还早(比赛刚进行不到一小时)于是先写对拍。
发现一个好东西:windows 可以切换桌面,你可以把对拍程序放桌面 2,其它放桌面 1。这样在你写别的程序时就不会被正在跑的 dp.bat 干扰了。尽管这不重要。
欸 T2 好像也见过类似的。反正做法一定是贪心,但贪心策略不明。部分分里有
有个
尝试思考了一会儿正解。其弱化版
不清楚。但如果延用这题的思路应该能骗不少分。于是写了一颗线段树。此时我的心态是保底
T4 一眼不会。写了送的
主线任务思考 T1 乱搞还没完成呢!最终也得到了一个需要用线段树维护的乱搞做法。但是对拍正确的概率很低很低很低。
值得一提的是,写 T1 送的
预计
T3 正解 Trie???我的思路不更简单???
总结
好的:
- 运气无敌。
不足:
- T1 的暴力写了很长时间。写代码前要想清楚较为简介的实现方法不要上来就是一个线段树。
- 给 T1 的乱搞做法写对拍时浪费了较长时间。
知识点
T1:暴力(?)优化
T2:贪心
T3:前缀和,位运算(Trie 树)
T4:贪心
题解
A. 体育课2
简洁题意:有
令
对于排列
在此同时维护链表,这有助于我们快速求出某个人后面第一个没死的人。
然后模拟即可。复杂度
可能代码更有助于理解:提交记录 #610619 - 梦熊联盟 (mna.wang)
B. 零件加工
简洁题意:数轴上有
贪心证明只会感性。
C. 优美的序列
简洁题意:求有多少区间异或和
套路求解前缀和
显然的也是 std 的做法是 Trie 树。但我没有。
运用类似数位 DP 的思想。在二进制视角下,如果
我们枚举
得到新的
- 求有多少
使得 。
这是平凡的。
因为用了 map 所以总复杂度两个
D. 产品加工
考虑如果只有一道工序该怎么做。
考虑贪心。我们每次找到当前仍空闲的且
实现上你可以维护一个堆。这份代码里 pair 的 first 维护的信息是:
- 如果某件商品要用这个机器,那么这件商品将会在什么时刻完成制作。也就是在原来
的基础上加了排队的时长。
void solve(int *f, int *a, int n) { // f[i] 表示第 i 件物品在什么时候制作完成
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> Q;
for (int i = 1; i <= n; ++ i ) Q.push({a[i], i});
for (int i = 1; i <= q; ++ i ) {
int x = Q.top().first, y = Q.top().second;
Q.pop();
f[i] = x;
Q.push({x + a[y], y});
}
}
两道工序?
我们可以将两道工序分别跑一遍上面的流程。得到两个长度为
但是
对于一个物品而言,它所花的时间是
将
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】