ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

noip模拟测试84

2021-10-30 06:31:27  阅读:189  来源: 互联网

标签:大样 暴力 noip 二进制 可以 84 思路 我们 模拟


考试过程:先读题,觉得开题顺序1,2,3,4,首先是T1,我刚开始觉得是二分+主席树,刚开始觉得这没什么问题,就开打。
打完后一测大样例发现有两个地方不对,经过调试后发现我这种思路并不能满足单调性,最后改成了暴力,但是因为数组开小了,导致\(70pts ->40pts\),跟10分钟打的暴力一个分。
然后是T2,我觉得是最短路,但是我遇到了两个问题:
1.如何解决当前是二进制下第几位。
2.如何存储这么大的数,并且能够比较大小。
在考场上我想了半天没有什么好的办法,就用了一个数组存起来,每次按位比较。但是小样例过了,大样例就有些数不对了,我没调出来。
T3,一道期望题,没什么思路,就打了个暴力走了。
T4 ,没有多少时间了,而且题目看着比较毒瘤,我就没做。

考试总结:1.想到可能是正解的思路后要先思考,验证正确性,不要等打完了后才发现是假的。
2.对于已有的想法可以适当发散思路,思考如何更好地利用这个想法去解题。

T1 宝藏

思路:主席树+双指针。
显然,对于一个中位数是否合法的判定,我们可以利用主席树\(o(logn)\)进行判定。
接下来我们考虑如何求出所有的情况。
我们可以将\(w\)从小到大排序,然后从最大值开始枚举中位数\(i\),从\(1\)开始枚举长度\(j\),显然,如果小的长度无法满足,那么大的一定也无法满足,这样我们就可以利用这个指针进行计算了。
时间复杂度\(o(n\times log(n))\)
代码如下:

T2 寻找道路

首先解决一个问题:如何知道当前是二进制下的第几位。
考虑问题的本质,我们想知道这是二进制下第几位的目的就是为了计算答案,那么我们可以反过来计算,每次将\(ans\times 2\),再考虑是否需要加一即可。
思路:因为前导零不会产生贡献,所以我们可以将\(1\)号店只走\(0\)边能到达的点都缩成一个点。
接下来我们要让走过的路径尽可能少,并最小化字典序。
那么我们可以利用一个类似于拓扑排序的思想,每次从队列里拿出所有距离相同并且答案相同的点,先遍历\(0\)边,后遍历\(1\)边更新答案。、
时间复杂度\(o(n+m)\)
代码如下:

T3 猪国杀

咕了

T4 数树

咕了

标签:大样,暴力,noip,二进制,可以,84,思路,我们,模拟
来源: https://www.cnblogs.com/WindZR/p/15473816.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有