CCF 2017 09-02 公共钥匙盒

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

2.vector数组的强大功能。

 #include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct node{
int num;//钥匙的编号
int start;//动作开始时间
int action;//动作的类型 0:放 1:取
node(){
}
node(int num,int start,int action):num(num),start(start),action(action){
}
}; bool cmp(node a,node b)
{
if(a.start != b.start) return a.start<b.start;///1.按照动作开始时间升序排列
else{
///2.如果时间相同,则先放后取
if(a.action != b.action) return a.action < b.action;
else{
///3.如果时间相同且操作相同,则按照钥匙编号升序排队
return a.num<b.num;
}
}
} int main()
{
int n,k;
while(cin>>n>>k)
{
vector<node> V;
vector<int> state(n+);
for(int i=;i<=n;i++) state[i] = i;
for(int i=;i<k;i++)
{
int num,start,len;
cin>>num>>start>>len;
V.push_back(node(num,start,));//取走钥匙
V.push_back(node(num,start+len,));
} ///按照起始时间升序排列
sort(V.begin(),V.end(),cmp); for(int i=;i<V.size();i++)
{
node u = V[i];
if(u.action == )//取走钥匙操作
{
for(int i=;i<=n;i++)
if(state[i] == u.num)
{
state[i] = -;break;
}
}else{
for(int i=;i<=n;i++)
if(state[i] == -)
{
state[i] = u.num;break;
}
}
} for(int i=;i<=n;i++)
{
cout<<state[i];
if(i==n) cout<<endl;
else cout<<" ";
}
}
return ;
}

Python:

 N, K = list(map(int, input().split()))
class node(object):
def __init__(self, num, time, action):
self.num, self.time, self.action = num, time, action
# action: 1代表取,0代表放 mlist = []
for i in range(K):
n1, n2, n3 = list(map(int, input().split()))
mlist.append(node(n1, n2, 1)) # 取
mlist.append(node(n1, n2 + n3, 0)) # 放 keyarr = [(i+1) for i in range(N)] # 将list进行排序,规则为
# 1. 按照时间升序
# 2. 时间相同,按照先放后取,即action升序
# 3. time和action相同,按照钥匙编号num升序
mlist.sort(key=lambda x:(x.time, x.action, x.num)) # 按照排序后的list进行操作
for i in range(2*K):
# print(mlist[i].time, mlist[i].action, mlist[i].num,)
if mlist[i].action == 1: # 取
keyarr[keyarr.index(mlist[i].num)] = -1
else:
for j in range(N):
if keyarr[j] == -1:
keyarr[j] = mlist[i].num
break for i in range(N):
print(keyarr[i], end="\t")

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

  1. CCF CSP 201709-2 公共钥匙盒

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-2 公共钥匙盒 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须 ...

  2. CCF 2017-09-2 公共钥匙盒

    CCF 2017-09-2 公共钥匙盒 题目 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室 ...

  3. CCF 201709-2公共钥匙盒

    问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...

  4. 公共钥匙盒(CCF)【模拟】

    问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...

  5. 公共钥匙盒 ccf

    试题编号: 201709-2 试题名称: 公共钥匙盒 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里, ...

  6. CCF(公共钥匙盒):思维+模拟

    公共钥匙盒 201709-2 这题的思路一开始不是很清晰,一开始想用贪心去做.但是发现按照题目的思路不对.所以这里采用的是类似于多项式的加减的处理. #include<iostream> ...

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

    2017.09.01 - 调试大叔 V1.0.1*支持http/https协议的get/post调试与反馈:*可保存请求协议的记录:*内置一批动态参数,可应用于URL.页头.参数:*可自由管理cook ...

  8. csp公共钥匙盒

    1.公共钥匙盒 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥 ...

  9. ccf-201709-2 公共钥匙盒

    问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中 ...

随机推荐

  1. docker 第四篇 网络

    安装docker以后自动添加三种网络方式 bridge: 表示桥接网络 (在本地自动创建一个软交换机) host: 表示让容器使用宿主机的网络名称空间 none: 表示没有网络 不能执行网络通信. 创 ...

  2. JDK,JRE,JVM 关系和概念

    JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...

  3. Apache httpclient的execute方法调试

    因为工作需要,想研究一下execute执行的逻辑. 在这一行调用execute: response = getHttpClient().execute(get); getHttpClient的实现: ...

  4. C#面向对象 (访问修饰符、封装、继承、多态)

    先看一下创建一个新项目时的基本格式 using System; using System.Collections.Generic; using System.Linq; //引用的命名空间 using ...

  5. idou老师教你学Istio05: 如何用Isito实现智能路由配置

    要介绍istio请求路由,我们不由得先从pilot 和 envoy开始谈起. 在服务网格中,Pilot管理和配置所有的envoy实例.在pilot中,你几乎可以配置所有的关于流量导向规则及其他故障恢复 ...

  6. 6.caffe:create_txt.sh(数据预处理成txt文本文件)

    #!/usr/bin/env sh DATA=/home/wp/CAFFE/caffe-master/myself/00b MY=/home/wp/CAFFE/caffe-master/myself/ ...

  7. 自定义ViewGroup基础巩固1---理解onLayout()方法

    自定义ViewGroup这个是在android中自定义控件中不可获缺的很重要的一部分,关于它的意义这里就不过多阐述了,为了在未来深入上继续走下去,所以先把基础给打牢. 这篇主要是理解ViewGroup ...

  8. Bootstrap-轮播图-No.5

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  9. [2019HDU多校第一场][HDU 6578][A. Blank]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题目大意:长度为\(n\)的数组要求分别填入\(\{0,1,2,3\}\)四个数中的任意一个,有 ...

  10. BZOJ 3065 带插入区间K小值 (替罪羊树套线段树)

    毒瘤题.参考抄自博客:hzwer 第一次写替罪羊树,完全是照着题解写的,发现这玩意儿好强啊,不用旋转每次都重构还能nlognnlognnlogn. 还有外面二分和里面线段树的值域一样,那么r = mi ...