ccf-csp #201703-2 学生排队
2020-04-07 18:29
1266 查看
题目链接:http://118.190.20.162/view.page?gpid=T56
题目分析
- 一开始看到题目描述以为是一道有点意思的算法题,看完数据范围1 ≤ n ≤ 1000,1 ≤ m ≤ 1000,发现原来是普通的模拟题。
- 需要用到一个mark数组记录各个编号学生所在的位置,每次调整队列时,先通过mark数组得到第p号学生的位置,然后根据q的正负值对p号学生的位置进行调整,调整的过程中要记得更新mark数组的值。虽然做下来是O(mq)O(mq)O(mq)的时间复杂度,但是跑得挺快的hhh。
代码如下
#include <iostream> #include <algorithm> using namespace std; const int maxn = 1005; int n, m, p, q; //a[i]表示i号位置站的学生编号,mark[i]表示i号学生的位置 int a[maxn], mark[maxn]; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m; for (int i = 1; i <= n; i++) { a[i] = i; mark[i] = i; } for (int i = 1; i <= m; i++) { cin >> p >> q; int idx = mark[p]; if (q > 0) { for (int i = 0; i< q; i++) { mark[a[idx + i]]++; mark[a[idx + i + 1]]--; swap(a[idx + i], a[idx + i+ 1]); } } else { q = -q; for (int i = 0; i< q; i++) { mark[a[idx - i]]--; mark[a[idx - i - 1]]++; swap(a[idx - i], a[idx - i - 1]); } } } for (int i = 1; i <=n; i++) { cout << a[i] << " "; } cout << endl; return 0; }
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- ccf-csp #201709-2 公共钥匙盒
- 解决Eclipse查看源代码出现Source not found的问题
- ccf-csp #201903-4 消息传递接口
- ccf-csp #201912-1 报数
- PHP7 安装 memcache
- 高校学生领取云服务器教程
- CentOS7安装wdCP面板,快速搭建web运行环境(图文详解)
- 剑指Offer #10 矩形覆盖(问题分析)
- 「软件测试基础」理论篇之软件测试概论
- wdCP面板升级MySQL版本为5.6
- Java基础之JDK 8下载、安装和环境变量配置
- 面试官问你HTTP状态码,你敢答吗?
- 手撕设计模式之单例模式(详细解析)
- Java的Arrays.sort()良心总结
- Spring Boot实现简单的用户权限管理(超详细版)
- HDU - 1716无需思考暴力做法
- C++ STL容器总结之vector(超详细版)
- 达摩院悬壶,看医疗 AI 如何济世
- 做了那么多架构,你真的懂 SOA 了吗?
- 前端生产方式:过去 10 年回顾和未来 10 年展望