We will hold AtCoder Beginner Contest 319.

- Contest URL: https://atcoder.jp/contests/abc319
- Start Time: http://www.timeanddate.com/worldclock/fixedtime.html?iso=20230909T2100&p1=248
- Duration: 100 minutes
- Number of Tasks: 8
- Writer: MMNMM, leaf1415, Nyaan, chokudai, m_99, evima
- Tester: kyopro_friends, Nyaan
- Rated range: ~ 1999

The point values will be 100-200-300-400-450-550-575.

Until ABC 318, we used 8 problems per contest because there were many difficult tasks we wanted to use in ABCs. Since we have used most of them, from this ABC, we will use 7 problems per contest.

The difficulty of problems A-F will not be changed. The range of difficulty of new problem Gs will be wider, some of them can be as easy as current problem Gs, while others can be as hard as current problem Exs. Please check the point values of each contest for more accurate estimation of difficulties.

We are looking forward to your participation!

Something is wrong!

8 problems, but 100-200-300-400-450-550-575.

Emm...

Are you sure if it is a mistake?

It says there will be 7 problem in ABC, but in this blog, it says

`Number of Tasks: 8`

.So WHY?

Until ABC 318, we used 8 problems per contest because there were many difficult tasks we wanted to use in ABCs. Since we have used most of them, from this ABC, we will use 7 problems per contest.

It means ABC319 will be 7 problem.

thx.

Number of Tasks:8

So where is the 8th problem???

This game only has 7 tasks, I don't know if this means the overall difficulty has increased

Look at the score should not?

The post said:

The difficulty of problems A-F will not be changed. The range of difficulty of new problem Gs will be wider, some of them can be as easy as current problem Gs, while others can be as hard as current problem Exs.

Thanks for your answer.

I think I will do three questions.

I hope it can be simpler this time.

it's better than a well-known problem in ex.

But only I can't connect to AtCoder?

What the hell is problem statement of C?

Same problem, if the cells are given completely random then, total possibilities will be 9! and disappointments would be a small fraction. If someone understood or solved it correctly, please write in this thread.

B is so hard.

just enumerate

The atcoder crashed...

My Atcoder is fine.

dude can you explain qC

I don't know what does C mean too.

I don't know what does C mean too.

I don't have any ideas about C-False Hope.This question is very vague.

agree.I can't get the writter's idea

You can consider all permutations of the order Takahashi sees the grids, check if it satisfies the condition easily. I agree the statement is not so clear, and that reading is the hardest part in solving the problem xd.

How we're calculating the probability tough!

wdym? isn't the probability equal to "total number of permutations that satisfy condition"/(1*2...*9) ?

oh...alrgt will try it out

But I think it's harder than usual

C has the worst problem statement I've ever seen.

.

Agree.The description of the title of this question is terrible.I don't know the origin of 2/3 at all!

Literal

False hope## After reading C:

The Problem statement and explanation for C is too bad

Task C was really a disaster.

Never seen such a bad description of a problem ,Even the Explanation of test cases are not clear.

I think the explanation is quite clear but the problem is too hard for C.

Am I the only one who thought E >>> (F and G)

how F please

you can do bitmask dp (bitmask denotes consumed medicines), notice that it's always optimal to defeat any enemy as soon as you can defeat it

Thank you very much! I didn't see the medicine constraint during the contest :(

Probably because $$$G$$$ is a kinda-standard problem?

But I think E is easier than F. $$$1\leq P_i\leq 8$$$ gives it away.

How did you do E?

Consider lcm(1 ... 8) = 840, so all the starting time that have the same value after mod 840 has the same min time to transport from station 1 to n. Just preprocess the min time of station transportation starting at time x(mod 840) and answer the questions after this.

Could you provide with a proof for this?

sort of obvious rly... I am really sorry, but I dont know how to put the explanation into mathematical terms :(

but maybe you can figure out by examining all the time mod p[i] after visiting station i and you will see.

Let's say you have $$$2$$$ buses having $$$p$$$ $$$=$$$ $$$[5, 6]$$$ and $$$t$$$ $$$=$$$ $$$[3, 4]$$$

If you reach the first bus stand at $$$0$$$, you can take the first bus at $$$0$$$, reach the bus stop after $$$3$$$ units of time, start bus two at $$$6$$$, and reach the final bus stop at $$$10$$$.

You can find the same for different values when you reach the first bus stop. It will be different for starting times (in this case) $$$6, 11, 16, ...$$$

Now try to find the bus travel time if you reach the first bus stop at time equal to $$$lcm(5, 6) = 30$$$. You'll realize that the position of buses is exactly the same as it was at the time $$$= 0$$$. So the value is same and this pattern will continue.

Hint 1$$$L = lcm(P_1, P_2, ..., P_N)$$$

The same configuration of bus availability repeats after every $$$L$$$ units of time.

Hint 2Since $$$1\leq P_i\leq 8$$$, the value of $$$L$$$ is very small. You can simulate the whole process for time units $$$0$$$ to $$$L-1$$$.

Can anybody explain C ?

just find all valid orders by brute forcing over all permutations of length 9

Doing just as you suggested but getting WA on sample testcase #2. Any idea what is wrong with my code?

Found the bug!!

Just leaving the comment though in case anyone stumbled upon.

Correct Code

how to solve D?

Binary Search

In D, what if the order of the words didn't matter, so would that problem be solved by dp ? How would we implement the solution in that case ?

D can be solved using binary search, choose l as 0 and r as 1e9.

Then apply binary search, with capacity as (l+r)/2, for the given capacity check if we can fill all words in m or less lines.

finally print value of left.

Basically capacity represents the best values for columns against m rows.

## include

## include

using namespace std;

bool checkIfPossible(vector&a , long long mid , int m){

}

void solve(){ long long n , k; cin>>n>>k; vectora(n); for(int i = 0;i<n;i++){ cin>>a[i]; }

}

int main() { #ifndef ONLINE_JUDGE freopen("./../input.txt","r",stdin); //file input.txt is opened in reading mode i.e "r" freopen("./../output.txt","w",stdout); //file output.txt is opened in writing mode i.e "w" #endif int t; // cin>>t; t = 1; while(t--){ solve(); } }

For Question D . What is wrong with my solution ? What am i doing wrong ?

what if single element value is greater than mid?

Thank you .Yes , that was the mistake

Hey can you repaste the correct code here please,considering the case: if (word_width > capacity) { return false; // Single word cannot fit within capacity }

## include

## include

using namespace std;

bool checkIfPossible(vector&a , long long mid , int m){

}

void solve(){ long long n , k; cin>>n>>k; vectora(n); for(int i = 0;i<n;i++){ cin>>a[i]; }

}

int main() { #ifndef ONLINE_JUDGE freopen("./../input.txt","r",stdin); //file input.txt is opened in reading mode i.e "r" freopen("./../output.txt","w",stdout); //file output.txt is opened in writing mode i.e "w" #endif int t; // cin>>t; t = 1; while(t--){ solve(); } }

Thank You.

Consider using a dichotomous answer for this question.

Regarding the proof of monotonicity for this question: since the wider the width of the display, the more width can be displayed in a line, the fewer lines are needed for the display (the total number of words remains the same). So the width of the monitor and the number of lines needed to display it** have a monotonically decreasing relationship**, so you can use dichotomization.

Dichotomize enumerates the width of the display $$$w$$$, and then calculates

the minimum number of lines needed to display a word with a width of $$$w$$$, if the number of lines needed is less than or equal to $$$m$$$, then it meets the requirement, otherwise it doesn't meet the requirement.How is this calculated?

If the width of the display $$$w$$$ is less than the maximum width of the word $$$mw$$$, it means that a word can not be put into the display, obviously does not meet the requirements.

So that $$$sum $$$ that the current line has been used for how much width, $$$cnt $$$ that the current use of how many lines, an enumeration of the length of the word $$$ l_i $$$, if the current width plus a space and $$$l_i $$$ the length of more than $$$ w $$$ that the current line can not be put in the word, the need to open a new line, so that $$$cnt $$$ plus $$$ 1 $$$, and so that $$$sum $$$ equal to $$$ l_i $$$, otherwise $$$sum $$$ plus $$$ l_i $$$ and $$$ l_i $$$ and $$$ l_i $$$, otherwise $$$ sum $$$ plus $$$l_i$$$ and the length of a space.

Time complexity: $$$O(\log n)$$$ for bisection, $$$O(n)$$$ for one calculation, $$$O(n \log n)$$$ for overall time complexity.

First five problems without C, how awkward, and bad problem.

Laugh at A, get confused about B, and then give up understanding at C.

I request Atcoder to take some action against a mass group whose user name starts with "klu". These all students belong from a certain university and have clearly mass copied, this drastically pushed the ranks.

Even with mass cheating, these losers could solve only the easiest three.

Even i was able to solve only the easiest 3, it took me ages to realise solving c wasnt worth it, but i clearly dont deserve a rank of 6000 when it should be in range of 3000-4000

totally agree.

wtf why do those Indian cheaters start invading AtCoder too?

Can someone explain the statement of C?

In problem C,Takahashi can see numbers in each cell in 9! different ways and we have to calculate valid permutations.A valid permutation is one in which for each row,column and diagonal which consists of two same values and one different value,he must visit the cell with different value before atleast one of the other two cells with same value. After that , the implementation is pretty much brute force.

But the definition of valid permutation (not disappointed)

was not clear at allatleast for me personally, it took me 40 min to understand what question is asking us to do and 7 odd minutes to implement it.Same with me.The problem statement should be more clear.

I considered the 9! factorials ways of choosing the grid cells. For every such order, I made a 3X3 grid from them, and then checked whether the permutation was valid by considering the 16 possible unique lines. But I'm getting a much lower answer for sample 1. Can you please take a look at what I'm doing wrong? submission

What do you mean you checked "whether the permutation was valid" ? Aren't all permutations valid ? They are just a way of picking up the picking up the elements from the grid. I think the real question is whether a permutation is "disappointing" for Takahashi.

Yeah, that's what I meant really, it's not valid, it's disappointing.

Yeah, C was a total buzz kill today. I wonder how much clearer was the Japanese description (for the Japanese speakers)...

G is even easier than F

can someone explain the solution for problem E?

I think this can be called a ABC319C disaster.

Can't agree more. Many of my classmates give up solving D,E when seeing C.

same i do :(

What is C? Why is C?

atcoder_official Editorials when?

Why there's no English Editorial?

can someone explain the sol of G? i'm thinking about bfs but i can't seem to optimized it.

When will the English Editorial be released

How to solve G? I used simple BFS with o(n^2*log(n)) solution using sets and got TLE.

Oh typical Turkish guys, $$$n \leq 2*10^5$$$.

I'm not turkish.

Azerbaijanis are Turks.

They're Azerbaijani Turks.

Is there any problem related to G? Very thanks!

Problem

Blog that explains this idea

Thanks a lot. I was able to solve the problem after reading the blog. Upvoted!

Can someone help me understand why my code for problem D doesn't pass all the tests? https://atcoder.jp/contests/abc319/submissions/45406059

I modified your code a bit. The submission is here: https://atcoder.jp/contests/abc319/submissions/45437738

Thanks! Can you help me understand why the modified code works and the original not? As far as I understand you increase the lower bound so there will be less checks during the binary search so it could improve the running time but it shouldn't effect the correctness of the program but for some reason it does.

C is the most shit problem

I have a strange solution for F:

Enumerate over all possible visiting orders of vertices with $$$t_i=2$$$. For each permutation, consider the following greedy strategy:

Repeat this step, until all monsters are cleared or there is no medicine available.

The overall time complexity is $$$\mathcal O(m!\times n\log n)$$$, where $$$m$$$ is the number of medicine vertices. So it can't fit in the time limit, but actually with some simple optimizations it ran in $$$800\mathrm{ms}$$$ (maybe can be hacked?).

However, I got

`WA`

x1 (submission). Did I make a mistake in the program or the idea is wrong?I used the same solution as yours.I found I got 3

`TLE`

.So I break when it will up to 2 seconds with`No`

.Then I got 2`WA`

.So I change to output`Yes`

or`No`

randomly with the one-third probability outputs`No`

,otherwise outputs`Yes`

.Then I pass the task with judging 9 times in all.submission(After 7 times,Oh god,I found I had forgot to add`srand(time(0));`

at first!)Oh,I found another one.Using

`random_shuffle`

instead of`next_permutation`

can get a higher probability to pass this task.I tried 3 times,and they all passed.Thanks. But my code tried all the permutations, without any randomization. I expected

`TLE`

, but why does it get`WA`

? Could you please have a look at my code?OK,let me have a look.

Some optimizations:

`__gnu_pbds::priority_queue`

instead of`std::priority_queue`

for a better constant factor`Yes`

.I'am in China now,I can't download the testcase.But you can try it.And I found another thing:I'am wrong,I can reach the subtree of a medicine without taking it.But I passed!

Maybe the test cases are too weak?

And the test cases for ABC319 are't published yet (in fact, the latest public test cases from AtCoder is that of ABC311).

Oh,that's too bad.

I got the same

`WA`

x 1 (my submission) for problem F and I would be happy to know what's wrong with my solution.Are there any special cases or I misunderstood the statement of problem F?

That's strange.My best friend

`WA`

on there too.Why doesn't Atcoder publish the testcases?Can anyone give proof for E, how time taken for t1 and t2 will be same if t1%840==t2%840

$$$lcm(1,2,3,4,5,6,7,8) = 840$$$

So the state of the bus stops repeats after every $$$840$$$ unit of time.

Can u please explain the approach..i am not able to understand why the state would repeat and why taking lcm is of any help

Thank you!

In the F，the data may be weak

5

1 1 1 1

2 2 0 5

3 1 1 1

4 1 15 1

My AC code can be hacked

My submission https://atcoder.jp/contests/abc319/submissions/45439007

And the reason is that I don't consider the limit of ti=2 must take the medicine

it was originally came up with DJ2006 :-)

but it is not important. plz add this data into the problem, thx.

I was looking at the submission of hitonanode, which seemed to more or less implement the algorithm described in the second editorial, the correctness of which I had tried to understand and prove. Eventually, to my great surprise, I constructed the case

for which the answer should be

`Yes`

, on which the aforementioned submission outputs`No`

.In my drawing of the corresponding tree below, the two multipliers are circled.

As for why it's

`Yes`

:1 -> 2 -> 3 results in 1*3+3 = 6, then 6*2 = 12, 12+2 = 14, 15 cannot be defeated. However, if one does 1*2 + 2 = 4, then 4*3 = 12, then 12+3 = 15, then 15 can be defeated.

Afterwards, I checked that the submissions of some other top contestants also output for this

`Yes`

.I had thought of private messaging hitonanode about this, but then, I felt a bit too shy to do so to such a highly rated coder for something as relatively unimportant as this. It is also not the first time I've seen solutions with more minor bugs AC. However, I do not think it is impossible that hitonanode or someone else could tell me thru what channel to submit an after contest case. Another thought is that maybe maspy, with whom I once had a minor exchange on GitHub, could point me to the right direction?

I'm really delighted to see that I forgot the $$$\pmod {998244353}$$$ in G. That's why I got WA.

I read the editorial for problem C and couldn't understand it. Why are only 8 ways being considered instead of 16 total ways to form a line? And editorial doesn't consider that the 3 cells can all be equal in which case we don't have to count. Granted that they can't be equal in a line in the given array, but when re-arranged, that very well can be the case.

I do not understand why my submission is wrong. Please help :pepecry: