2017微软秋季校园招聘在线编程笔试(第三题)

SAP SD科目确定:从配置到凭证的财务集成核心 本文深入解析SAP SD科目确定的核心价值与配置实践,涵盖从主数据准备到财务凭证生成的全流程。通过六步配置法和KOFI00过程拆解,帮助企业实现销售与财务模块的高效集成,确保收入、成本等数据准确归集至对应会计科目,提升财务自动化水平与数据准确性。 阅读详情

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

It's H University's Registration Day for new students. There are M offices in H University, numbered from 1 to M. Students need to visit some of them in a certain order to finish their registration procedures. The offices are in different places. So it takes K units of time to move from one office to another.

There is only one teacher in each office. It takes him/her some time to finish one student's procedure. For different students this time may vary. At the same time the teacher can only serve one student so some students may need to wait outside until the teacher is available. Students who arrived at the office earlier will be served earlier. If multiple students arrived at the same time they will be served in ascending order bystudent number.

N new students need to finish his/her registration. They are numbered from 1 to N. The ith student's student number is Si. He will be arrived at H University's gate at time Ti. He needs to visit Pi offices in sequence which are Oi,1, Oi,2, ... Oi,Pi. It takes him Wi,1, Wi,2, ... Wi,Pi units of time to finish the procedure in respective offices. It also takes him K units of time to move from the gate to the first office.

For each student can you tell when his registration will be finished?

输入

The first line contains 3 integers, N, M and K.  (1 <= N <= 10000, 1 <= M <= 100, 1 <= K <= 1000)

The following N lines each describe a student.

For each line the first three integers are Si, Ti and Pi. Then following Pi pairs of integers: Oi,1, Wi,1, Oi,2, Wi,2, ... Oi,Pi, Wi,Pi. (1 <= Si <= 2000000000, 1 <= Ti <= 10000, 1 <= Pi <= M, 1 <= Oi,j <= M, 1 <= Wi,j <= 1000)

输出

For each student output the time when he finished the registration.

样例提示

Student 1600012345 will be arrived at the gate at time 500. He needs to first visit Office #1 and then Office #2. He will be arrived at office #1 at time 600. He will leave office #1 at time 1100. Then He will arrive at office #2 at 1200. At the same time another student arrives at the same office too. His student number is smaller so he will be served first. He leaves Office #2 at 1700. End of registration.

Student 1600054321 will be arrived at the gate at time 1100. He will be arrived at Office #2 at 1200. Another student with smaller student number will be served first so he waits for his turn until 1700. He leaves Office #2 at 2000. End of registration.

样例输入
2 2 100  
1600012345 500 2 1 500 2 500  
1600054321 1100 1 2 300
样例输出
1700  
2000

解题思路:

        一个模拟题,用队列模拟一下学生办理手续的先后顺序,再用一个数组记录每个办理手续的地方办理完当前手续的时间即可。

代码:

#include <cstdio>
#include <queue>
#include <cstring>

using namespace std;

struct student_info{
    int id,s,time,goWhich;
    bool operator < (const student_info &a) const{
        if(time == a.time){
            return s > a.s;
        }
        return time > a.time;
    }
};

struct student{
    int s,t,p;
    int order[105];
    int time[105];
};

int n,m,k;
student stu[10005];
int ans[10005];
int endTime[105];
priority_queue<student_info> q;

int main()
{
    int n,m,k;
    scanf("%d%d%d",&n,&m,&k);
    for(int i = 0; i < n; i ++){
        scanf("%d%d%d",&stu[i].s,&stu[i].t,&stu[i].p);
        for(int j = 0; j < stu[i].p; j ++){
            scanf("%d%d",&stu[i].order[j],&stu[i].time[j]);
        }
        q.push((student_info){i,stu[i].s,stu[i].t + k,0});
    }
    /*while(!q.empty()){
        student_info now = q.top();
        q.pop();
        printf("%d %d\n",now.s,now.time);
    }*/
    memset(endTime,0,sizeof(endTime));
    while(!q.empty()){
        student_info now = q.top();
        q.pop();
        //printf("%d %d\n",now.s,now.time);
        if(now.goWhich == stu[now.id].p - 1){
            if(endTime[stu[now.id].order[stu[now.id].p-1]] < now.time){
                ans[now.id] = now.time + stu[now.id].time[stu[now.id].p-1];
                endTime[stu[now.id].order[stu[now.id].p-1]] = now.time + stu[now.id].time[stu[now.id].p-1];
            }
            else{
                ans[now.id] = endTime[stu[now.id].order[stu[now.id].p-1]] + stu[now.id].time[stu[now.id].p-1];
                endTime[stu[now.id].order[stu[now.id].p-1]] += stu[now.id].time[stu[now.id].p-1];
            }
        }
        else{
            if(endTime[stu[now.id].order[now.goWhich]] < now.time){
                endTime[stu[now.id].order[now.goWhich]] = now.time + stu[now.id].time[now.goWhich];
                now.time += stu[now.id].time[now.goWhich] + k;
            }
            else{
                now.time = endTime[stu[now.id].order[now.goWhich]] + stu[now.id].time[now.goWhich] + k;
                endTime[stu[now.id].order[now.goWhich]] += stu[now.id].time[now.goWhich];
            }
            now.goWhich ++;
            q.push(now);
        }
    }
    for(int i = 0; i < n; i ++){
        printf("%d\n",ans[i]);
    }
    return 0;
}



WPF+Prism+LiveCharts+materialdesignin 搭建WPF开发框架 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容。 阅读详情

相关推荐

Win11下Wezterm配置Powershell默认终端全攻略(含主题同步技巧)

本文详细介绍了在Windows 11系统中,如何安装和配置Wezterm终端模拟器,并将其设置为PowerShell的默认终端。内容涵盖使用Winget或手动安装Wezterm,通过修改.lua配置文件切换默认Shell,并同步Campbell主题配色以还原熟悉的PowerShell视觉体验,旨在帮助开发者打造高效、个性化的命令行工作环境。

weixin_28363123的博客 1215

微软2017年预科生计划在线编程笔试,附解题思路

微软2017年预科生计划在线编程第一场笔试题目题解 GitHub两场考试的代码 #1489 : Legendary Items 首先需要看懂题目,博主一开始就是题目没看懂。导致一直WA。 大概思路就是计算每次得到一个传奇(legendary)需要几次探索,不要被树的结构迷惑了。这里附上一个hihocoder的github第一题讲解。以下图摘自上面的链接里。 ...

倒着走的码农 5170

微波射频学习笔记18-------偶极子天线和微波天线设计介绍

几种天线设计方法的介绍 一、偶极子天线 1.天线模型 两根紧挨着的金属导体,长度均为四分之一波长,直径均远小于波长,两导体间距也远小于波长。 2.天线性能的设计因素 ① 单个导体长度L:(光速/频率)/4=四分之一波长(在空气中传播的波长),但在导体中传播,波长会变短; ② 导体半径R:远小于波长即可,使用导电率高些的材料,市面上常见直径零点几毫米就挺好,或者用波长/200,得出一个小200的值,也算远小于波长; ③ 两导体间距S:远小于波长即可,可以比半径更小点。 以上三个变量L、R、S,均可在仿真软件

Sil_sprout 1万+

微软笔试题(附答案)

1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如 何用烧绳的方法来计时一个小时十五分钟呢? 2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多 少个就可以确定你肯定有两个同一颜色的果冻? 3.如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均 匀,问你如何才能准确称出4公升的水? 4.一个岔...

omygege 5363

Cadence创建异形焊盘教程(详细操作)

背景:一些常见的矩形/圆形焊盘,设置参数就可。碰到非规则的一些焊盘,那只能用Cadence Allegro PCB来画咯。 一、新建图形 【File】——>【New…】 弹出如下窗口,选择绘制的类型Shape symbol、路径,输入名字 二、设置参数 【Setup】——>【Design Parameters…】 Enhanced display modes:增强型显示模型。全部勾选上。 在【Design】设置单位为mm 设置偏移量(-50,-50) 三、绘制图形 1、找到原点,即参考

qq_42057393的博客 2万+

GR00TN1.7国内本地下载+模型下在+hugingface无法连接,本地模型下载

GR00TN1.7

alsj123456的博客 97

2017微软秋季校园招聘在线编程笔试-#1400 : Composition

http://hihocoder.com/problemset/problem/1400 题意理解:有限制的两个不能相邻,i之和前面剩下的那一个相关,所以可以f【i】【ch】的动态规划去做,每次转移考虑删不删i的字符 急转弯:想到i只和前面一个相关,并且可以记录下来。 算法:无 数据结构:无 # # 'f' __author__ = 'hjkrucli

ruclion的专栏 2735

如何制作Mike21溢油模型围油栏文件

这段时间群友在做海洋环评的做了一个MIKE21的溢油模型,溢油模型其实也是ECOLAB模块的应用,而在海上发生溢油事件的时候,为防止溢油对海洋生态的破坏,经常使用的一种手段就是使用围油栏技术将溢油控制在一定范围并进行处理。今天小编就给大家说说在MIKE21里怎么实现围油栏文件的制作

zhuzhujiayoua的博客 1329

微软笔试题编程实现

在网上看到了一些微软的笔试题,第一遍的做错了很多,自己就试着编程实现,其实是一些简单的题目。 下面这道:连续整数之和为1000的共有几组? 答案分析是这样的:首先1000为一个解。连续数的平均值设为x,1000必须是x的整数倍。 假如连续数的个数为偶数个,x就不是整数了。x的2倍只能是5,25,125才行。因为平均值为12.5,要连续80个达不到。125/262.5是可以的。即62,...

264

C#实战:5分钟搞定西门子S7-1200 PLC数据读写(S7netplus保姆级教程)

本文详细介绍了如何使用C#和S7netplus库快速实现与西门子S7-1200 PLC的数据读写。从环境准备、连接管理到数据读写高级技巧,提供了保姆级教程和实战方案,帮助开发者绕过常见陷阱,提升工业自动化项目的开发效率。

weixin_28432777的博客 283

Android USB串口通信详解与实例

在Android开发中,USB串口通信是一个常见的需求,尤其是在与硬件设备进行交互时。通过USB串口,我们可以轻松地实现数据的发送与接收。本文将详细介绍如何使用库来实现Android设备与USB串口设备的通信。

m0_62153576的博客 677

微软亚洲研究院2017年笔试编程题

微亚编程题能看得出好可怕呀感觉要求ACM金牌什么的才可能 不过很多都是ai部分的 从题目可以看得出来.

微小的鱼的博客 3595

融合Retinex理论与Transformer的YOLOv8低光照目标检测增强方法【YOLOv8】

图像分解:将输入图像分解为光照成分和反射成分。光照估计:估计光照图以消除暗光区域。图像重建:将光照增强后的反射图像重建成最终图像。Retinexformer通过在Transformer中引入Retinex的图像增强思路,使得低光照图像的细节能够得到充分保留。本文提出了一种基于Retinexformer的低光照增强方法,用于改进YOLOv8模型在夜间和低光照环境下的目标检测性能。

博客 1929

2017微软秋季校园招聘在线编程笔试 Composition

题目链接:http://hihocoder.com/contest/mstest2016oct/problem/2 题意:给我们一些约束相邻的条件,让我们判断最少去掉多少个字符达到这个状态。 解题思路,因为都是小写字母,我们完全可以根据每个字母的约束条件,找到条件下的最长子串,答案就是长度减去这个最长子串的长度。 复杂度:26*n #include #include #incl

RaAlGhul的博客 2777

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

2017微软秋季校园招聘在线编程笔试

2017微软秋季校园招聘在线编程笔试 前三题题解

dearmango 1548

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

hihoCoder 1399 Shortening Sequence

2017微软秋季校园招聘在线编程笔试A 看N的范围就知道是用什么复杂度的算法了 用个stack存就好了 #define LOG(x) cout << #x << " = " << (x) << endl #define PRINTLN(x) cout << (x) << endl #define MEM(x, y) memset((x), (y), sizeof((x))) #in

more time 606

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

2017微软秋季校园招聘在线编程笔试-#1401 : Registration Day

http://hihocoder.com/problemset/problem/1401 题意理解:每个人进队离队100次,10000个人,所以用优先队列1e6的nlogn应该可以,而将班级混起来,按照时间t排序就是对的。 急转弯:使用优先队列,班级混起来,用时间t和sno排序来做就是对的:同一个课堂的顺序一定对,而不同课堂,若排队的再其他课堂没排队的前面,那么当前排队的优先级一定

ruclion的专栏 436

2017微软秋季校园招聘在线编程笔试-#1399 : Shortening Sequence

http://hihocoder.com/problemset/problem/1399 题意理解:就是奇偶相碰会消失,最后剩多少个 急转弯:其实只要有奇数和偶数存在,都会想消,所以最后剩的就是多的那个。 算法:无。 数据结构:无。 from __future__ import print_function # # 'easy' __author__ = 'h

ruclion的专栏 629

春招攻略

昨晚ACMer求职交流群发群公告,腾讯hr校招已经开始招2018届了,才发现2017届校招说过去就过去了,好吧~校招对象现在是2017年,校园招聘的对象是2018届毕业生,即2014级在校生春招秋招对于校园招聘的春招和秋招,当然春招是在春天,秋招是在秋天啦~不过除此之外,对于校招的孩子们,一定要好好把握春招的机会

痕 3855

2017微软秋季校园招聘在线编程笔试-#1402 : MS Recognition

http://hihocoder.com/problemset/problem/1402 题意理解:M和S都很大,并且相互离的很远,M和S的两个端点不一样,M不平衡,所以端点的中点到重心的距离和端点的距离比值》0.5就是M。很奇怪为什么画一条支线看个数会不行,或者是参数设置的不好? 急转弯:端点和重心,距离关系 算法:bfs找端点 数据结构:无 from __

ruclion的专栏 418

2017微软秋季校园招聘在线编程笔试(第二题)

2017微软秋季校园招聘在线编程笔试(第二题) 描述 Alice writes an English composition with a length of N characters. However, her teacher requires that M illegal pairs of characters cannot be adj

accelerator_2016的博客 910

2017微软秋季校园招聘在线编程笔试 题目2 Composition

http://hihocoder.com/contest/mstest2016oct/problem/2 一开始N*N一直超时,觉得不应该,然后java换成C++写了一下,还是TLE。各种地方改了一下,时间花了很多但依然还是大写的TLE。 后来想了一下,改成26*N总该可以了吧,然后ac了 题目2 : Composition 时间限制:10000ms 单点时限

hqw11的博客 1132

2017微软秋季校园招聘在线编程笔试(第一题)

题目大意:         有一个由n个数组成的数列,如果相邻的两个数和为奇数,则这两个数可以消去,问怎么消可以使剩下的数字最少。 解题思路:         无论怎么消结果都是一定的,所以直接贪心即可。 代码: #include #include using namespace std; int n,now; stack s; int main() { scanf("

accelerator_2016的博客 707

2017微软秋季校园招聘在线编程笔试 Composition (DP)

2017微软秋季校园招聘在线编程笔试 1400 : Composition hihocoder

快乐的小鸟_ZJU 1554
上一篇: 2017微软秋季校园招聘在线编程笔试(第二题)
accelerator_2016
博客等级 码龄11年 3粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值