As Errichto suggested here, I will post date/time of upcoming SRMs once I know, and will update it about 24 hours before the contest so it will be in the "Recent Actions" list.

SRM 702 will start on Nov 14 at 9pm EST. Note that Daylight Saving Time will end on Nov 6.

This is the last SRM before Topcoder Open 2016, so please come and compete if you want to practice once more. :)

Update: the contest will start in less than 1.5 hours.

Update: SRM 702 will start in 24 hours.

Will be fun to get this on TCO.

I'm sorry, looks like my internet provider blocks arena :(

How to Solve div2 1000 points problem?

What I did is as follows :

Made a recursive function with memorization (Dynamic Programming), which will return expected value given a subset of block (call it mask) and the face vector.

For each subset I calculated the result when a particular faces comes up with probability equal to 1/face.size() and for this face removed a subset, which sums to the number on this face, from mask, which will be most favorable (meaning which enable us create most of the numbers on the faces after removing the face).

I am NOT passing all testcases with this approach. Passing 6 out 7 given test cases.

Can anyone please explain where I am going wrong ?

Here is my code if you would like to have a look :

I didn't understand the problem , didn't get the part about finding the

minimumexpected score . Can someone explain why the answer for {1,2,1} , {1,2} is 0.5 ?Imagine you are Bob and you rolled a 2 in the first round. You can now either discard two 1s or you can discard a single 2. What should you do? Clearly, it's better to discard the 2. If you don't see it yet, let's examine what happens in both cases:

If you are left with the blocks {1,1}: Regardless of what you roll next, you will be able to discard some more blocks. If you roll a 2 next, you will discard everything. If you roll a 1 followed by a 1, you will discard everything. And if you roll a 1 followed by a 2, you will discard one of the blocks and then the game will end with score 1. The expected score in this case is (1/4)*1 = 0.25.

If you are left with the block {2}: If your next roll is a 1, your game is over and your score is 2. If your next roll is a 2, you discard the block and your game will then end with score 0. In this case, your expected score is (1/2)*2 = 1, which is way worse.

What's the point in div1 500? Was the intended solution different from what most people have submitted?

The intended solution is like most submission.

Maybe it is too much like a brain teaser, but I think it is still legit to use it — at least it is kind of novel and the result (pass rate and score distribution) looks good.

I guess the main thing was to notice that it's not the same as correct bracket sequence in usual understanding. I was ready to start coding dp solution for usual correct bracket sequence but was lucky enough to decide to double-check the statement first as the it looked too suspicious. I think more people would've solved this problem if there was an example with some short string like "()(())" saying it's not "good" by the definition from the statement.

how to solve div1 1000pts?

First, let's binary search for answer. So problem reduces to finding if there exists a happy sublist with length at least m and value k.

For each number, we can compute the closest index on the left that has absolute value at most k, and the closest index on the right that has absolute value at most k.

For example, if the list is equal to [8,1,10,2,9,7], and k=2, then left = [-1,-1,0,1,2,4], and right = [2,3,4,6,5,6]. This is a pretty standard problem and can be solved using some binary indexed trees and takes O(n log n) time.

Now, consider the following pseudocode to check if all sublists are not happy:

This is correct, but it is too slow. In particular, the line for finding the index is too slow if we try the straightforward loop from s to e. Instead, let's just scan from both ends simultaneously. This now becomes O(n log n) (basic idea is the recurrence is now T(n) = T(a) + T(b) + min(a,b)).

Overall time complexity is O(n log^2 n).

Thanks so much.By the way,the idea to scan from both ends simultaneously is so fantastic!

Finding left and right via offline processing using sets in nlogn gives TLE: http://ideone.com/K9Jdoo on test case #35.

So, nlog^2(n) had to be implemented carefully?

I missed a lot of SRMs in the last 2 months. I think you should post the announcement of upcoming SRM 48 hours before it starts, and push the blog on top of recent actions again 24 hours later. Thank you very much for your reliable reminder :)

Is there any possibility to subscribe to these notifications via email?

You can sign up for the TopCoder Newsletter. You get all the information about upcoming contests (SRMs, Marathon etc) in advance, at least I do.

Newsletter reports about upcoming SRM in about 24 hours.