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可能会超时),找不到这张券就不要了,找了记得把商品删了

0 点赞 评论 收藏
分享

0 点赞 评论 收藏
分享

0 点赞 评论 收藏
分享

0 点赞 评论 收藏
分享

0 点赞 评论 收藏
分享

0 点赞 评论 收藏
分享
单选寄,kmp和进程调度忘光了算法前两道签到题,只要能记起来A-z的ASCII码就问题不大。最后一道直接干到1e18,无语了,数组都塞不下。尝试预处理仍然只有0.45,真不知道怎么才能1s以内了。。。

0 点赞 评论 收藏
分享

0 点赞 评论 收藏
分享

0 点赞 评论 收藏
分享

0 点赞 评论 收藏
分享

0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: