Challenge

Welcome to Wisdom Cup 

 

竞赛规则

1.群主不定期于本页面公布赛题(会提前通知出题时间),每期仅一题。参赛者无需提前报名,完成后直接将代码发送给guan.huifeng@gmail.com即可参与。 
2.每人在每24小时内只有一次提交代码的机会。提交时请注明自己的LeetCode ID。 
3.群主会对提交的代码进行手工测评,对于通过全部测试数据的选手按照提交时间先后进行排名。除了公布获胜名单,群主不会给选手反馈任何测评的细节(包括测试数据、WA原因等等)。 
4.获胜名单仅包括排名前三名的选手,群主会发放红包奖励,同时公布获胜者代码。 
5.每期竞赛的有效期截止至群主收到前三名完全正确的代码提交为止,最长不超过一周。 
6.试运营期间,群主目前仅接受C++和py3代码的提交。Java代码的测评暂时不在计划之内。 
7.允许大家在群内对赛题进行讨论,但是请注意群规的“防水群条款”。 
8.此项赛事欢迎各类冠名赞助(或赛事组织权的外包),用于提供优胜者的奖金。 

 

=========================

Round 1: 美西时间 07/12/2019, Fri. 6pm (北京时间07/13/2019, Sat. 9am)

对于两个字符串x和y,我们定义函数f(x,y)表示字符串y完整、连续地在字符串x中出现的次数。 比如说f(abcabb,ab)=2.
现在给定三个字符串u,s,t.字符串s和t都是完全给定的。但是字符串u的一部分字符待定(用*表示),比如u=abc***de.
要求你能找到一个字符串u(即确定u中*表示的部分),使得result = f(u,s)-f(u,t)的值最大。答案只要输出result就行。

代码函数头的定义
(C++)int solve(string u, string s, string t)
(py3)def solve(u: str, s: str, t: str) -> int:

范围:
1.u的长度在1到1000之间,仅包含小写字母或者星号。
2.s和t的长度在1到50之间,仅包含小写字母。s和t不会相同。

说明:
1.你的代码时间复杂度必须尽可能地优秀,保证编译后在普通电脑上运行时可以秒出答案。群主有权自行判断TLE。
2.各种corner case风险莫测,但每人每天只有一次提交机会!
3.本期第一名32元红包,第二名16元红包,第三名8元红包。

成绩:
第一名:Caloplaca (2 attempts)

 

=========================

Round 2: 美西时间 08/21/2019, Wed. 6pm (北京时间08/22/2019, Sat. 9am)

给定两个相等长度的数组a,b。对于数组a,你可以选择任意一段区间进行从小到大的排序。这个操作可以重复多次。请问,数组a是否能够通过有限次的操作变成b?
代码函数头的定义
(C++)bool solve(vector<int>&a, vector<int>&b)
(py3)def solve(a: list, b: list) -> bool:
数据范围:
1.你的代码会被调用10^5次。请确保时间复杂度最优,至少低于o(n^2)才有pass的希望。
2.a和b的长度最长可达10^5
说明:
1.你的代码时间复杂度必须尽可能地优秀,保证编译后在普通电脑上运行时可以秒出答案。群主有权自行判断TLE。
2.各种corner case风险莫测,但每人在24小时内只有一次提交机会!
3.本期第一名32元红包,第二名16元红包,第三名8元红包。

 

成绩:

第一名:cuiaoxiang     (1 attempt)
第二名:zerotrac2          (1 attempt)
第三名:Caloplaca         (2 attempts)

=========================

Round 3: 美西时间 01/15/2021, 1am

出题人:zerotrac2

我有2n张牌,每次会分出前n张(第一堆)和后n张(第二堆),用它们来交叉洗牌。交叉洗牌的规则是:将牌序变成第一堆第一张,第二堆第一张,第一堆第二张,第二堆第二张,第一堆第一张...以此类推。
问有多少个n使得这样洗10次之后,牌序会和初始的时候一样?

不用给出答案 说出做法就行 第一名如果在国内的话我可以请你吃顿外卖 在北美的话就30rmb好了 

成绩:

获胜者:hongrubb

解析:
题目来源:https://projecteuler.net/problem=622 

=========================

Round 4: 美西时间 03/13/2021, 6am

有n个同学,编号从1到n。它们进行首尾配对的淘汰赛。也就是说,每一个回合,第i个人会和倒数第i个人配对;如果该轮总人数为奇数,那么中间的那个人就会轮空晋级。每一个回合结束之后,晋级的同学会按照自己原先的编号继续从小到大排列,进行下一个回合的首尾配对。直至最终产生冠军。

 
现在给出n,以及两个同学的原始编号a与b。这两个同学是实力最强的选手(打任何其他人必赢)。而其他任何同学之间的比赛,谁输谁赢都有可能。
 
问这两个最强选手a与b,最早和最晚会在第几轮交手。
 
2 <= n <=1e18
1 <= a,b <=n
 
例子:
输入
11 2 4
输出
3 4
 
分析:晋级回合如下
1 2 3 4 5 6 7 8 9 10 11
after 1st: 2 3 4 5 6 11
after 2nd: 2 3 4
可见,选手2和选手4可以在第三轮交锋。这是最早的情况。
 
1 2 3 4 5 6 7 8 9 10 11
after 1st: 1 2 3 4 5 6
after 2nd: 1 2 4
after 3rd: 2 4
可见,选手2和选手4可以在第四轮交锋。这是最晚的情况。
 
特别鸣谢:本次比赛由快手科技的MMU智能创作团队负责人张德兵博士供题并颁发奖金。
 
选手可以用C++/Java/Python2的任意一种语言提交代码至群主邮箱 guan.huifeng@gmail.com,要求用标准输入读取数据(三个整数 n,a,b,),标准输出打印结果(两个整数)。数据之间都用单空格分开。
 
群主会在一个小时内回复你提交代码的测评结果,但不会给出具体测试数据。收到群主反馈之后,你可以再次提交新的代码。
 
本次比赛第一个通过全部测试的奖金100元rmb,第二名60元,第三名40元,第4到10名随机抽取两个分别发32元。
 

成绩:

第一名:zhenguowcs    (1 attempt)