CCF 20170902 公共钥匙盒(只有40分,不知道为什么,求教啊!)

2024-02-20 03:58

本文主要是介绍CCF 20170902 公共钥匙盒(只有40分,不知道为什么,求教啊!),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*
仍然只40分! 
Author:L
Date:2019/3/16 20:40-00:15 
Project:ccf2017/09-2 公共钥匙盒 
*/
#include <iostream>
using namespace std;

class key{
    public:
        int num;//需要的钥匙号 
        int start;//取走 w钥匙号的时间 
        int temp;//w钥匙号需要用多久
        int end;//w钥匙需要还的时间
}; 

int main()
{
    //n把钥匙,k位老师需要用到钥匙 
    int n,k,min_end=0,max_end=0,c[1001];
    cin>>n>>k;
    //存储钥匙的位置 
    int a[1001];
    //存储k位老师需要的钥匙号以及取、还的时间    
    key b[1001];
    for(int i=0;i<k;i++)
    {
        cin>>b[i].num>>b[i].start>>b[i].temp;
        b[i].end=b[i].start+b[i].temp;
    } 
    //初始化钥匙位置 
    for(int j=1;j<=n;j++)
    {
        a[j]=j;
    }
    
    //找到需要还的最早的时刻  b[min_end].end
    for(int i=1;i<k;i++)
    {
        if(b[min_end].end>b[i].end)
            min_end=i;//0
        if(b[max_end].end<b[i].end)
            max_end=i;//1
    } 
        
    //在 小于 b[min_end].end时刻 的需要取钥匙的位置为空。10305
    for(int i=0;i<k;i++)
    {
        if(b[i].start<b[min_end].end)
            a[b[i].num]=0;    
    } 
        
    //在等于 b[min_end].end时刻开始的  num 从小到大依次放进去。
    //在每一个时刻,先还再拿->还钥匙编号从小到大,空位 从左至右, 
    for(int x=b[min_end].end;x<=b[max_end].end;x++)
    { 
        int cc=0;
        //找到 b[min_end].end时刻需要还钥匙的那些num(钥匙号) 
        for(int i=0;i<k;i++)
        {
            if(b[i].end==x) 
            { 
                c[cc]=b[i].num;
                cc++;
            }    
        } 
        
        //c[]中的从小到大排序,共有c个钥匙需要还(冒泡排序)
        for(int j=cc;j>1;j--)
        {    
            for(int i=0;i<j-1;i++)
            {
                if(c[i]>c[i+1]) swap(c[i],c[j+1]);    
            } 
        }

        if(cc!=0)
        {
            //还钥匙
            int d=0;
            for(int i=1;i<=n;i++) 
            {            
                if(a[i]==0)
                {
                    a[i]=c[d];
                    d++;
                    if(d==cc) break;    
                }
            }
        }

        //取钥匙
        for(int i=0;i<k;i++)
        {
            if(b[i].start==x)    
                for(int j=1;j<=n;j++)
                {
                    if(a[j]==b[i].num)
                        a[j]=0;
                }
        } 
    }
    
    //初始化钥匙位置 
    for(int j=1;j<=n;j++)
    {
        cout<<a[j]<<" ";
    }
    return 0;
}

这篇关于CCF 20170902 公共钥匙盒(只有40分,不知道为什么,求教啊!)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/726970

相关文章

poj1330(LCA最近公共祖先)

题意:求最近公共祖先 思路:之前学习了树链剖分,然后我就用树链剖分的一小部分知识就可以解这个题目了,记录每个结点的fa和depth。然后查找时,每次将depth大的结点往上走直到x = y。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstring>

CCF推荐C类会议和期刊总结(计算机网络领域)

CCF推荐C类会议和期刊总结(计算机网络领域) 在计算机网络领域,中国计算机学会(CCF)推荐的C类会议和期刊为研究者提供了广泛的学术交流平台。以下是对所有C类会议和期刊的总结,包括全称、出版社、dblp文献网址以及所属领域。 目录 CCF推荐C类会议和期刊总结(计算机网络领域) C类期刊 1. Ad Hoc Networks 2. CC 3. TNSM 4. IET Com

在二叉树中找到两个节点的最近公共祖先(基于Java)

如题  题解 public int lowestCommonAncestor(TreeNode root, int o1, int o2) {//记录遍历到的每个节点的父节点。Map<Integer, Integer> parent = new HashMap<>();Queue<TreeNode> queue = new LinkedList<>();parent.put(roo

[情商-13]:语言的艺术:何为真实和真相,所谓真相,就是别人想让你知道的真相!洞察谎言与真相!

目录 前言: 一、说话的真实程度分级 二、说谎动机分级:善意谎言、中性谎言、恶意谎言 三、小心:所谓真相:只说对自己有利的真相 四、小心:所谓真相:就是别人想让你知道的真相 五、小心:所谓善解人意:就是别人只说你想要听到的话 前言: 何为真实和真相,所谓真相,就是别人想让你知道的真相!洞察谎言与真相! 人与人交流话语中,处处充满了不真实,完全真实的只是其中一小部分,这

【UVA】10066-The Twin Towers(最长公共子串问题)

赤裸裸的最长公共子串问题,没什么好说的,注意的是,每组数据后面都有一个空行。 13996019 10066 The Twin Towers Accepted C++ 0.015 2014-08-06 00:34:53 #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using

看病要排队这个是地球人都知道的常识

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝唯有付出,才有丰富的果实收获! 看病要排队这个是地球人都知道的常识。 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来

纳米材料咋设计?蛋白质模块咋用?看这里就知道啦!

大家好,今天我们来了解一项关于蛋白质纳米材料设计的研究——《Blueprinting extendable nanomaterials with standardized protein blocks》发表于《Nature》。蛋白质结构复杂,其组装体的设计颇具挑战。但近期的研究取得了新突破,通过设计标准化的蛋白质模块,如线性、曲线和转角模块等,实现了纳米材料的可扩展性和规律性。这

科研小白成长记40——第三个五年计划

小gap期间,拼命玩和拼命休息的同时,仔细思考了下我期望的五年之后的样子,gap结束,算是目标愈发清晰起来。曾经,读博的目标是成为一名independent researcher,并且具备发至少一篇顶会的能力。而现在,希望五年后的自己,成为一名good independent researcher。当然,这里的good,根据现阶段的科研榜样,已经有了具体的metrics。 首先是随时在线的深度理解

javaweb-day02-2(00:40:06 XML 解析 - Dom4j解析开发包)

导入dom4j开发包:dom4j-1.6.1.jar   在工程下建一个文件夹lib,将dom4j-1.6.1.jar拷到里边。右键add to build path。  dom4j-1.6.1\lib文件夹下还有一些jar包,是开发过程中dom4j所需要依赖的jar包,如开发过程中报错,则需导入。   用dom4j怎么做呢? 只要是开源jar包提供给你的时候,它会在开源包里面提供

windows下nginx+php配置(win2008+nginx1.7.12+php5.4.40)

下载php5.4.40 下载的时候注意是nts版本 地址:http://windows.php.net/downloads/releases/php-5.4.40-nts-Win32-VC9-x86.zip 下载nginx1.7.12  地址:http://nginx.org/download/nginx-1.7.12.zip 下载RunHiddenConsole.zip 作用是运行时隐