巨人笔试
第一题本来想输出"Yes"或者"No"来骗分,没想到直接100了😀
第二题,最开始过了55,第二次提交直接过了60。
第一题,解析输入,写完了,没思路,骗的分。
第二题,思路:
1. 同一时间段内车票得数量不能超过n
2. 使用一个map存放区间得购买得票数
3. 维护每个区间,同时有得票得数量,最多为n,使用一个int[m]来存放
1.查询时
// 查询 Q 2 3,查询2号到3号,共一个站点2号的票数,按最小的取。
// 1.查询每个tickets[j],j(a,b)不包括b,找最小的票数
2.购买时
// B 0 2 3,表示买从0到2号站点共0 1 两个站点3张票
// 1.判断使用够票,先查询,如果够了,就买,
// 2.买票,每个tickets[j],j(a,b)不包括b,都要+买的票数c
// 3.将key="a-b"放入map中,同时value+=c
3.退票时
// R 0 2 3,表示买从0到2号站点共0 1 两个站点3张票
// 1.判断使用map中是否有该票存在,判断是否够退,够退,就退
// 2.退票,每个tickets[j],j(a,b)不包括b,都要-退的票数c
// 3.将key="a-b"放入map中,同时value-=c
第二题,最开始过了55,第二次提交直接过了60。
第一题,解析输入,写完了,没思路,骗的分。
第二题,思路:
1. 同一时间段内车票得数量不能超过n
2. 使用一个map存放区间得购买得票数
3. 维护每个区间,同时有得票得数量,最多为n,使用一个int[m]来存放
1.查询时
// 查询 Q 2 3,查询2号到3号,共一个站点2号的票数,按最小的取。
// 1.查询每个tickets[j],j(a,b)不包括b,找最小的票数
2.购买时
// B 0 2 3,表示买从0到2号站点共0 1 两个站点3张票
// 1.判断使用够票,先查询,如果够了,就买,
// 2.买票,每个tickets[j],j(a,b)不包括b,都要+买的票数c
// 3.将key="a-b"放入map中,同时value+=c
3.退票时
// R 0 2 3,表示买从0到2号站点共0 1 两个站点3张票
// 1.判断使用map中是否有该票存在,判断是否够退,够退,就退
// 2.退票,每个tickets[j],j(a,b)不包括b,都要-退的票数c
// 3.将key="a-b"放入map中,同时value-=c
全部评论
ak的最莫名其妙的一次。输入没描述需要猜。数据范围也没有。主打一个抽象。第一题只能用C++,样例输入是一个“无”字,输出NO能拿满分
只a了一道,还是骗来的,哈哈
第二题可能需要一个线段树维护一下区间最值和区间和
第二天没看懂票数咋弄的
第二题看起来像是考察差分数组,下次可以拍照贴个原题大伙一起瞅瞅
第二题用一个数组记录每个区间的票数,再用一个哈希表记录每张票的区间,就可以100了
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享