多益还有hlp岗位,没想到😂
点赞 评论

相关推荐

04-09 21:10
武汉大学 Java
az77927792:1:用个栈去维护出连续0,1的长度,然后去取连续1的最大长度,取不到或者取到了但不等于9就是unlucky,否则就是lucky 2:先按不花钱的最大糖果数每个人都去拿,如果此时m已经<=0了直接输出0,否则剩下的一个人去换,因为白嫖的已经拿满了,因此只要多拿就得多用劵,所以上取整即可 3:先特判n!=m的情况,然后对于n==m的情况,先计算s1每个数字的个数nums,然后从高位往低位递归s2,bool dfs(nums,s2,p) 对于每一个位置p,能取到与s2[p]相同的就先取,然后去递归p+1,如果返回true说明取的没问题,否则先还原状态,然后从s2[p]-1遍历到1去找第一个nums[k]>=1的数k,找不到可用的就返回false,找到了就直接用这个数k,后面的直接按从大到小排列的方式把nums里的剩余的数全用了,然后返回true,如果递归到p==s2.size()的位置也返回true(这儿是能刚好组成s2的情况),答案可以在递归过程中去维护 4:按减免额b[i]从大到小排序即可,每张券去找第一个大于等a[i]的商品p[j],可以用multiset和multiset自带的成员函数lower_bound去维护(直接使用普通的lower_bound可能会超时),找不到这张券就不要了,找了记得把商品删了
投递拼多多集团-PDD等公司10个岗位 笔试
点赞 评论 收藏
分享
04-20 21:45
已编辑
上海交通大学 C++
第一题&nbsp;k路字符串&nbsp;优先级队列第二题&nbsp;裸的拓扑排序,注意判断是否有环第三题&nbsp;一开始直接写的最长上升子序列(严格),WA,于是推断山的高度必须是整数,于是对nums[i]-i求最长上升子序列(不严格)AC第四题&nbsp;样例过,提交之后过0%样例,没看出来哪里错了,贴一下代码&nbsp;#include&nbsp;using&nbsp;namespace&nbsp;std;int&nbsp;main()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//数据范围来说,至少是需要n方或者更好的算法&nbsp;&nbsp;&nbsp;&nbsp;//注意读题,首先不是严格大于,其次需要注意交换需要前提条件,即a[i]&nbsp;&gt;&nbsp;x,这意味着交换过程中,x的数值是原来越大的,和x交换的值的门槛也是越来越大,隐含的条件就是如果小于x的数字没有有序,那么久没办法完成操作了&nbsp;&nbsp;&nbsp;&nbsp;//手玩一下:&nbsp;&nbsp;&nbsp;&nbsp;//81&nbsp;324&nbsp;218&nbsp;413&nbsp;324&nbsp;x&nbsp;=&nbsp;18&nbsp;如果与i&gt;=1的位置交换,剩下的18没人可以换走,直接不可行&nbsp;&nbsp;&nbsp;&nbsp;//18&nbsp;324&nbsp;218&nbsp;413&nbsp;324&nbsp;x&nbsp;=&nbsp;81&nbsp;同理,如果与i&nbsp;&gt;=&nbsp;2的位置交换,剩下的81没有可以换走,直接不可行&nbsp;&nbsp;&nbsp;&nbsp;//18&nbsp;81&nbsp;218&nbsp;413&nbsp;324&nbsp;x&nbsp;=&nbsp;324&nbsp;我们选择将413与324交换&nbsp;&nbsp;&nbsp;&nbsp;//18&nbsp;81&nbsp;218&nbsp;324&nbsp;324&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//再来领悟一下样例&nbsp;&nbsp;&nbsp;&nbsp;//0&nbsp;2&nbsp;3&nbsp;5&nbsp;4&nbsp;x&nbsp;=&nbsp;1&nbsp;当前发现后面有一个4在捣乱,我们要想办法把它调整下来,但是要调整,就说明当前x&nbsp;=&nbsp;1需要换上去到某一个位置,也就只能是和2换,这一步是固定的&nbsp;&nbsp;&nbsp;&nbsp;//0&nbsp;1&nbsp;3&nbsp;5&nbsp;4&nbsp;x&nbsp;=&nbsp;2&nbsp;同样的,捣乱的4还没有解决,所以继续要调整,当前x&nbsp;=&nbsp;2只能换在begin,故而&nbsp;&nbsp;&nbsp;&nbsp;//0&nbsp;1&nbsp;2&nbsp;5&nbsp;4&nbsp;x&nbsp;=&nbsp;3&nbsp;begin变成了5的下标&nbsp;&nbsp;&nbsp;&nbsp;//0&nbsp;1&nbsp;2&nbsp;3&nbsp;4&nbsp;x&nbsp;=&nbsp;5&nbsp;此时发现已经解决//再来领悟一下输出-1的样例&nbsp;&nbsp;&nbsp;&nbsp;//11&nbsp;9&nbsp;x&nbsp;=&nbsp;10&nbsp;当前begin&nbsp;=&nbsp;0&nbsp;end&nbsp;=&nbsp;1,但是注意到nums[end]&nbsp;&lt;&nbsp;x,最终不可以被移动,所以已经寄了&nbsp;&nbsp;&nbsp;&nbsp;//以上过程说明:对于小于x的内容,如果是已经有序地位于开头,那么就已经不可行了&nbsp;&nbsp;&nbsp;&nbsp;//对于大于x的无序的内容,如果存在多个,比如10&nbsp;20&nbsp;30&nbsp;40&nbsp;6&nbsp;4&nbsp;x=&nbsp;3,其中6和4都是乱序的,但似乎此时并不需要决定和其中的谁交换,只能从begin开始交换&nbsp;&nbsp;&nbsp;&nbsp;//3&nbsp;20&nbsp;30&nbsp;40&nbsp;6&nbsp;4&nbsp;x&nbsp;=&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;//3&nbsp;10&nbsp;30&nbsp;40&nbsp;6&nbsp;4&nbsp;x&nbsp;=&nbsp;20&nbsp;&nbsp;&nbsp;&nbsp;//3&nbsp;10&nbsp;20&nbsp;40&nbsp;6&nbsp;4&nbsp;x&nbsp;=&nbsp;30&nbsp;&nbsp;&nbsp;&nbsp;//3&nbsp;10&nbsp;20&nbsp;30&nbsp;6&nbsp;4&nbsp;x&nbsp;=&nbsp;40&nbsp;爆炸&nbsp;&nbsp;&nbsp;&nbsp;//至此大胆提出假设:先处理得到其中单增的区间&nbsp;&nbsp;&nbsp;&nbsp;//0&nbsp;2&nbsp;3&nbsp;5&nbsp;4&nbsp;x&nbsp;=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;//其中比x小的部分已经确保落在该有的位置上了&nbsp;&nbsp;&nbsp;&nbsp;//0&nbsp;[2&nbsp;3&nbsp;5]&nbsp;[4]&nbsp;x&nbsp;=&nbsp;1&nbsp;那么我们会把{[2,&nbsp;3,&nbsp;5]&nbsp;x&nbsp;=&nbsp;1}变化为{[1&nbsp;2&nbsp;3]&nbsp;x&nbsp;=&nbsp;5},即相当于原来有序的空间中最大的没了,最小的变成原有x。花费是有序空间大小&nbsp;&nbsp;&nbsp;&nbsp;//然后x变成了原有空间中最大的那个,然后继续这样扫描//再来手玩一下:&nbsp;&nbsp;&nbsp;&nbsp;//4&nbsp;5&nbsp;6&nbsp;7&nbsp;8&nbsp;9&nbsp;10&nbsp;3&nbsp;x&nbsp;=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//{[4&nbsp;5&nbsp;6&nbsp;7&nbsp;8&nbsp;9&nbsp;10]&nbsp;x&nbsp;=&nbsp;1}-&gt;{[1&nbsp;4&nbsp;5&nbsp;6&nbsp;7&nbsp;8&nbsp;9]&nbsp;x&nbsp;=&nbsp;10}&nbsp;由于次大的9还是大于无序的3,所以没办法&nbsp;&nbsp;&nbsp;&nbsp;//总结思路:线性扫描,找到从开始到现在最长的有序集(其中小于x的部分不统计长度)int&nbsp;t;&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;t;&nbsp;&nbsp;&nbsp;&nbsp;while(t--)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;n,&nbsp;x;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;n&gt;&gt;x;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vector&nbsp;nums(n);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;n;&nbsp;++i)&nbsp;cin&gt;&gt;nums[i];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;begin&nbsp;=&nbsp;0,&nbsp;end&nbsp;=&nbsp;0,&nbsp;costBegin&nbsp;=&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;ans&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;flag&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(begin&nbsp;&lt;&nbsp;n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//end&nbsp;begin&nbsp;costBegin&nbsp;x&nbsp;ans&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(end&nbsp;+&nbsp;1&nbsp;&lt;&nbsp;n&nbsp;&amp;amp;&amp;amp;&nbsp;nums[end&nbsp;+&nbsp;1]&nbsp;&gt;=&nbsp;nums[end])//扫描到end,并更新end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(costBegin&nbsp;==&nbsp;-1&nbsp;&amp;amp;&amp;amp;&nbsp;nums[end]&nbsp;&gt;&nbsp;x)&nbsp;costBegin&nbsp;=&nbsp;end;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++end;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;cout&lt;&lt;&amp;quot;begin&nbsp;=&nbsp;&amp;quot;&lt;&lt;&lt;&amp;quot;,&nbsp;end&nbsp;=&nbsp;&amp;quot;&lt;&lt;&lt;&amp;quot;,&nbsp;costBegin&nbsp;=&nbsp;&amp;quot;&lt;&lt;&lt;&#39;\n&#39;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//从begin&nbsp;到&nbsp;end&nbsp;递增,且从costBegin开始大于x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(end&nbsp;==&nbsp;n&nbsp;-&nbsp;1)&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(begin&nbsp;!=&nbsp;end)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(nums[end&nbsp;+&nbsp;1]&nbsp;&lt;&nbsp;nums[end&nbsp;-&nbsp;1])&nbsp;{flag&nbsp;=&nbsp;false;&nbsp;break;}//没办法调整&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;+=&nbsp;(end&nbsp;-&nbsp;costBegin&nbsp;+&nbsp;1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;nums[end];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;=&nbsp;begin&nbsp;=&nbsp;end&nbsp;+&nbsp;2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;costBegin&nbsp;=&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(nums[end]&nbsp;&gt;&nbsp;x&nbsp;&amp;amp;&amp;amp;&nbsp;x&nbsp;&lt;=&nbsp;nums[end&nbsp;+&nbsp;1])&nbsp;{++ans;&nbsp;x&nbsp;=&nbsp;nums[end];&nbsp;end&nbsp;=&nbsp;begin&nbsp;=&nbsp;end&nbsp;+&nbsp;2;&nbsp;costBegin&nbsp;=&nbsp;-1;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{flag&nbsp;=&nbsp;false;&nbsp;break;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(flag)&nbsp;cout&lt;&lt;&lt;&#39;\n&#39;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;cout&lt;&lt;&amp;quot;-1\n&amp;quot;;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
牛客网
牛客企业服务