CCF CSP 201709-2:公共钥匙盒
2018-03-08 15:12
549 查看
公共钥匙盒
个人思路:
这道题主要考查模拟钥匙借还操作,需要按照题目所给规则的顺序来进行操作。我用二维vector来存储要操作的事件:
vector< vector<int> > v(m, vector<int>(2)); //v[i][0]为时间;v[i][1]为操作钥匙号,正数为还,负数为借。
然后自己写了个排序函数,按照题设规则来排列这些操作事件,最后只要按这个顺序直接操作就可以了。
代码如下:
个人思路:
这道题主要考查模拟钥匙借还操作,需要按照题目所给规则的顺序来进行操作。我用二维vector来存储要操作的事件:
vector< vector<int> > v(m, vector<int>(2)); //v[i][0]为时间;v[i][1]为操作钥匙号,正数为还,负数为借。
然后自己写了个排序函数,按照题设规则来排列这些操作事件,最后只要按这个顺序直接操作就可以了。
代码如下:
#include <bits/stdc++.h> using namespace std; void swap(vector< vector<int> > &v, int i){ int m = v[i][0], n = v[i][1]; v[i][0] = v[i+1][0]; v[i][1] = v[i+1][1]; v[i+1][0] = m; v[i+1][1] = n; } //按题意借还的先后规则排序 void v_sort(vector< vector<int> > &v){ int n = v.size(); for(int i = 0; i < n; i++){ //冒泡排序 for(int j = 0; j < n - i - 1; j++){ if(v[j][0] > v[j+1][0]){ //时间小的先操作 swap(v, j); } else if(v[j][0] == v[j+1][0]){ //同一时间 if(v[j][1] > 0 && v[j+1][1] > 0 && v[j][1] > v[j+1][1]){ //同时还,小号的先 swap(v, j); } else if(v[j][1] < 0 && v[j+1][1] > 0){ //还钥匙先于借钥匙 swap(v, j); } } } } } //公共钥匙盒 int main(){ int n, k; cin >> n >> k; vector<int> box(n); //初始化钥匙盒 for(int i = 0; i < n; i++){ box[i] = i + 1; } int m = 2 * k; vector< vector<int> > v(m, vector<int>(2)); //v[i][0]为时间,v[i][1]为操作钥匙号 for(int i = 0; i < m; i += 2){ //初始化各项借还操作 int key, s, e; cin >> key >> s >> e; e += s; v[i][0] = s; v[i][1] = 0 - key; //负数为借钥匙 v[i+1][0] = e; v[i+1][1] = key; //正数为还钥匙 } v_sort(v); for(int i = 0; i < m; i++){ int k = v[i][1]; if(k > 0){ //还钥匙k for(int i = 0; i < n; i++){ if(box[i] == 0){ box[i] = k; break; } } } if(k < 0){ //借钥匙k for(int i = 0; i < n; i++){ if(box[i] + k == 0){ box[i] = 0; break; } } } } for(int i = 0; i < n; i++){ cout << box[i] << " "; } return 0; }
相关文章推荐
- CCF CSP试题题解:201709-2 公共钥匙盒
- CCF CSP 201709-2 公共钥匙盒
- CCF CSP 201709-2 公共钥匙盒
- 【CCF-CSP 201709-2】公共钥匙盒
- 【CCF-CSP 201709-2】公共钥匙盒
- 【CCF-CSP 201709-2】公共钥匙盒
- [CCFwithAxin]201709-2公共钥匙盒
- 【CCF-CSP 201709-2】公共钥匙盒
- ccf csp 公共钥匙盒
- 【CCF-CSP 201709-2】公共钥匙盒
- CCF 201709-02公共钥匙盒
- CCF-201709-2-公共钥匙盒
- 【CCF-CSP 201709-2】公共钥匙盒
- 【CCF-CSP 201709-2】公共钥匙盒
- [置顶] ccf-csp 2017-09-02 公共钥匙盒
- 【CCF-CSP 201709-2】公共钥匙盒
- CCF CSP 公共钥匙盒 JAVA 201709-2 100分
- 【CCF-CSP 201709-2】公共钥匙盒
- 【CCF-CSP 201709-2】公共钥匙盒
- [ccf/csp题]201709-2公共钥匙盒