CCF 2017 09-02 公共钥匙盒

 CCF 2017 09-02 公共钥匙盒

1.用快速排序函数结合排序规则函数来给取放排序。

2.vector数组的强大功能。

 1 #include<iostream>
 2 #include<vector>
 3 #include<algorithm>
 4 using namespace std;
 5 struct node{
 6     int num;//钥匙的编号
 7     int start;//动作开始时间
 8     int action;//动作的类型 0:放 1:取
 9     node(){
10     }
11     node(int num,int start,int action):num(num),start(start),action(action){
12     }
13 };
14
15 bool cmp(node a,node b)
16 {
17     if(a.start != b.start) return a.start<b.start;///1.按照动作开始时间升序排列
18     else{
19         ///2.如果时间相同,则先放后取
20         if(a.action != b.action) return a.action < b.action;
21         else{
22         ///3.如果时间相同且操作相同,则按照钥匙编号升序排队
23         return a.num<b.num;
24         }
25     }
26 }
27
28 int main()
29 {
30     int n,k;
31     while(cin>>n>>k)
32     {
33         vector<node> V;
34         vector<int> state(n+1);
35         for(int i=1;i<=n;i++) state[i] = i;
36         for(int i=0;i<k;i++)
37         {
38             int num,start,len;
39             cin>>num>>start>>len;
40             V.push_back(node(num,start,1));//取走钥匙
41             V.push_back(node(num,start+len,0));
42         }
43
44         ///按照起始时间升序排列
45         sort(V.begin(),V.end(),cmp);
46
47         for(int i=0;i<V.size();i++)
48         {
49             node u = V[i];
50             if(u.action == 1)//取走钥匙操作
51             {
52                 for(int i=1;i<=n;i++)
53                     if(state[i] == u.num)
54                     {
55                         state[i] = -1;break;
56                     }
57             }else{
58                 for(int i=1;i<=n;i++)
59                     if(state[i] == -1)
60                     {
61                         state[i] = u.num;break;
62                     }
63             }
64         }
65
66         for(int i=1;i<=n;i++)
67         {
68             cout<<state[i];
69             if(i==n) cout<<endl;
70             else cout<<" ";
71         }
72     }
73     return 0;
74 }

原文地址:https://www.cnblogs.com/yxh-amysear/p/8476355.html

时间: 2024-08-05 04:35:35

CCF 2017 09-02 公共钥匙盒的相关文章

2017/09/02笔记:ps

1.ctrl+alt +鼠标滚动可方法或缩小psd(另一种办法:ctrl同时按就"+"号键): 2切图:移动工具+ctr选中,选择图层,点击右键选择"转为智能对象",用选区工具选择切图区域,按ctrl+n新建页面确定,然后保存 :

CCF 2017-09-2 公共钥匙盒

CCF 2017-09-2 公共钥匙盒 题目 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中. 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙.一串钥匙没有固定的悬挂位置,但钥匙上有标识,所以老师们不会弄混钥匙. 每次取钥匙的时候,老师们都会找到自己所需要的钥匙将其取走,而不会移动其他钥匙.每次还钥匙的时候,还钥匙的老师会找到最左

【CCF】公共钥匙盒

问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中. 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙.一串钥匙没有固定的悬挂位置,但钥匙上有标识,所以老师们不会弄混钥匙. 每次取钥匙的时候,老师们都会找到自己所需要的钥匙将其取走,而不会移动其他钥匙.每次还钥匙的时候,还钥匙的老师会找到最左边的空的挂钩,将钥匙挂在这个挂钩上.如果有多位

CCF - 201709-2 - 公共钥匙盒

问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中. 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙.一串钥匙没有固定的悬挂位置,但钥匙上有标识,所以老师们不会弄混钥匙. 每次取钥匙的时候,老师们都会找到自己所需要的钥匙将其取走,而不会移动其他钥匙.每次还钥匙的时候,还钥匙的老师会找到最左边的空的挂钩,将钥匙挂在这个挂钩上.如果有多位

ccf——201709-2公共钥匙盒

题目: 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中. 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙.一串钥匙没有固定的悬挂位置,但钥匙上有标识,所以老师们不会弄混钥匙. 每次取钥匙的时候,老师们都会找到自己所需要的钥匙将其取走,而不会移动其他钥匙.每次还钥匙的时候,还钥匙的老师会找到最左边的空的挂钩,将钥匙挂在这个挂钩上.如

公共钥匙盒 ccf

试题编号: 201709-2 试题名称: 公共钥匙盒 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中. 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙.一串钥匙没有固定的悬挂位置,但钥匙上有标识,所以老师们不会弄混钥匙. 每次取钥匙的时候,老师们都会找到自己所需要的钥匙

java反射详解 (转至 http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html)

本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解. 下面开始正文. [案例1]通过一个对象获得完整的包名和类名 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package Reflect; /**  * 通过一个对象获得完整的包名和类名  * */ class Demo{     //other codes... } class hello{     pu

作者:周公 /// 首发地址:http://blog.csdn.net/zhoufoxcn/archive/2008/09/02/2864429.aspx /// 日期:2008-09-01

我们先看下面一段程序: public class Son:Father { public void Run0() { Console.WriteLine("Son.Run0"); } } class Program { static void Main(string[] args) { Father[] fatherList = new Father[2]; fatherList[0] = new Father(); fatherList[1] = new Son(); fatherL

调试大叔V1.0.1(2017.09.01)|http/s接口调试、数据分析程序员辅助开发神器

2017.09.01 - 调试大叔 V1.0.1*支持http/https协议的get/post调试与反馈:*可保存请求协议的记录:*内置一批动态参数,可应用于URL.页头.参数:*可自由管理cookie:*支持请求的代理与模拟环境参数设置:*时间戳管理(取网络当前时间戳.转成日期.转成倒计时):*支持拖放文件到本程序窗计算文件的MD5.SHA1.CRC32值:*集成常见编码解码(Ansi与Utf8互转.URL加解密.UniCode转中文);*集成常用符号与其UniCode值:*集成常用数学计算