Блог пользователя Vladosiya

Автор Vladosiya, история, 2 года назад, По-русски

Привет! В Feb/13/2024 17:35 (Moscow time) начнётся Codeforces Round 925 (Div. 3) — очередной Codeforces раунд для третьего дивизиона. В этом раунде будет 6-8 задач, которые подобраны по сложности так, чтобы составить интересное соревнование для участников с рейтингами до 1600. Однако все желающие, чей рейтинг 1600 и выше могут зарегистрироваться на раунд вне конкурса.

Раунд пройдет по правилам образовательных раундов. Таким образом, во время раунда задачи будут тестироваться на предварительных тестах, а после раунда будет 12-ти часовая фаза открытых взломов. Мы постарались сделать приличные тесты — так же как и вы, мы будем расстроены, если у многих будут падать решения после окончания контеста.

Вам будет предложено 7 задач и 2 часа 15 минут на их решение.

Штраф за неверную попытку в этом раунде будет равняться 10 минутам.

Напоминаем, что в таблицу официальных результатов попадут только достоверные участники третьего дивизиона. Как написано по ссылке — это вынужденная мера для борьбы с неспортивным поведением. Для квалификации в качестве достоверного участника третьего дивизиона надо:

  • принять участие не менее чем в пяти рейтинговых раундах (и решить в каждом из них хотя бы одну задачу)
  • не иметь в рейтинге точку 1900 или выше.

Независимо от того являетесь вы достоверными участниками третьего дивизиона или нет, если ваш рейтинг менее 1600, то раунд для вас будет рейтинговым.

Задачи были придуманы и написаны нашей командой: myav, Gornak40, ibraevdmitriy и Vladosiya.

Также большое спасибо:

  1. MikeMirzayanov за помощь с идеями и системы Polygon и Codeforces.

  2. nigus за красное тестирование раунда.

  3. vladmart, Gheal, KseniaShk за жёлтое тестирование раунда.

  4. htetgm за фиолетовое тестирование раунда.

  5. natalina, JuicyGrape, lockdown, kotikk за синее тестирование раунда.

  6. RedDreams за бирюзовое тестирование раунда.

  7. the_Incharge, Aurora__, Longqiang за зелёное тестирование раунда.

Всем удачи!

P.S. С наступающим днём святого Валентина!

UPD: Давайте продолжим серию анонсов с фотографией авторов :)

UPD2: Разбор

  • Проголосовать: нравится
  • +385
  • Проголосовать: не нравится

»
2 года назад, скрыть # |
 
Проголосовать: нравится +24 Проголосовать: не нравится

Wow, you put a lot of effort to make a lot of quality div3. Thanks for a lot good div3 round to help beginner to advances in CP.

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Yeahhhh!!! Div 3 Letsssss Gooooo

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Div 3 are my favourite. Lots to learn.

»
2 года назад, скрыть # |
Rev. 2  
Проголосовать: нравится +2 Проголосовать: не нравится

the round number and date is wrong please fix

»
2 года назад, скрыть # |
 
Проголосовать: нравится +11 Проголосовать: не нравится

speedforces let's go

»
2 года назад, скрыть # |
 
Проголосовать: нравится +4 Проголосовать: не нравится

Thursday, October 12, 2023?

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I hope this is my last round before cyan

»
2 года назад, скрыть # |
 
Проголосовать: нравится +54 Проголосовать: не нравится

Thank WHO for red testing 😳

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

My first unrated Div3 I mog everyone

»
2 года назад, скрыть # |
 
Проголосовать: нравится +7 Проголосовать: не нравится

don't make your gf sad, prepare gift after contest

»
2 года назад, скрыть # |
 
Проголосовать: нравится -21 Проголосовать: не нравится

отличные фотки, а как насчёт подождать 2 года в очереди, как все остальные?

»
2 года назад, скрыть # |
 
Проголосовать: нравится -16 Проголосовать: не нравится

I had no idea authors could be so pretty. I'm blushing (,,>﹏<,,)

»
2 года назад, скрыть # |
 
Проголосовать: нравится +15 Проголосовать: не нравится

so sweet post. Happy Valentine's Day. Do spend time with ur loved ones, instead of attending contests

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I am the one in the button right on Valentine's day :⁠,⁠-⁠)

»
2 года назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится

I don't get it,why are authors making a 'C' with their hand?

»
2 года назад, скрыть # |
 
Проголосовать: нравится -10 Проголосовать: не нравится

Thanks for the contest but why y'all throwing up gang signs?

»
2 года назад, скрыть # |
 
Проголосовать: нравится +2 Проголосовать: не нравится

Valentine's Day ? Oh man, i am CPer

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

My first unrated contest

»
2 года назад, скрыть # |
 
Проголосовать: нравится +90 Проголосовать: не нравится

They are so similar

»
2 года назад, скрыть # |
 
Проголосовать: нравится -10 Проголосовать: не нравится

why are the names of the authors written in reverse

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Hopefully my last rated div3

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

why the solution will be out 5 minutes before the contest ends?

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Hope positve delta for all rated participant.

»
2 года назад, скрыть # |
 
Проголосовать: нравится +20 Проголосовать: не нравится

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Fells like C

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Good luck to everyone.I hope to become expert on this round.

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Hope to reach expert again

»
2 года назад, скрыть # |
Rev. 2  
Проголосовать: нравится -13 Проголосовать: не нравится

Disgusting problem F

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Got the right idea for F about an hour after the contest started but spent the next hour debugging double-hash. :(

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

please hint for C

  • »
    »
    2 года назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    You MUST choose x as the first OR the last element.

  • »
    »
    2 года назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    three possible ranges you will select from k to n , from 0 to n-k , or from i+k to n-k. k is the index is where there's no more duplicates from the beginning or end from the array, like [1,1,1,2,3,4,5] k is at index were ai is equal 2 , so we can make the range we select [4,7] , same from the back. i+k to n-k is when the duplicated at front is the same from the back . sorry for bad explaining

  • »
    »
    2 года назад, скрыть # ^ |
    Rev. 3  
    Проголосовать: нравится 0 Проголосовать: не нравится

    You can look for the longest segment of equal elements from the start, let's call it a, and the longest segment of equal elements from the end, call that b. Now, there are two cases:

    (1)If the first and last elements are equal, you can choose the contiguous segment of elements not in either a or b. (notice, if len(a) + len(b) > n, the answer is zero. Else the answer is n — len(a) — len(b))

    (2)If the first and last elements are not equal, you choose the equal element as the element that comes in the longer segment. (notice, the answer in this case is n — max(len(a), len(b)))

»
2 года назад, скрыть # |
Rev. 2  
Проголосовать: нравится +1 Проголосовать: не нравится

i am annoyed i couldn't get F i didn't think it will be cycle detection at all.

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Problem D is nice, thanks for the contest. But how to solve F?

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

I feel like idea of F was simple but the implementation was tedious. Also, loved G!

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Any hints for G?

  • »
    »
    2 года назад, скрыть # ^ |
     
    Проголосовать: нравится +3 Проголосовать: не нравится

    Try reducing this problem to a stars and bars problem Try to think what are the prerequisites if we want to place the 4th block at any place same goes for the 3rd Think which blocks are the limiting factors and which we can take care of irrespective of their quantity Have a Great solve!!

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Maybe it's just me, BUT F seemed way easier than both D and E, although didn't spend much time on E after I saw F, which I had just the right idea for. Overall very fun Contest.

»
2 года назад, скрыть # |
Rev. 2  
Проголосовать: нравится +25 Проголосовать: не нравится

Quick hints for all the problems before the Editorial comes out.

A: Just brute force on each index using 3 for loops.

B: As the water can't flow backward, therefore the amount of water in any prefix can only decrease or stay constant.

C: Check if all equal, else count prefix equal length and suffix equal length.

D: What if we store the remainders in pair<int, int>?

E: Replace each number by the count of its trailing zeroes, now play the game greedily.

F: We can easily create the order from the first 2 arrays given (if k = 1, then its YES). Just make sure to handle one edge case [1,2,3,5,4] and [2,1,3,5,4], basically those in which there are 2 possible orders)

G: Pieces 1 and 2 can only appear alternatively, and the pieces 3 and 4 will always fit in the between their occurences. Also, pieces 3 and 4 can be repeated, while 1 and 2 can't. Try fixing Piece 1 or 2 as the first piece in the chain, do you get some general pattern?


Spoiler
»
2 года назад, скрыть # |
 
Проголосовать: нравится +10 Проголосовать: не нравится

F — "Detect cycle in a directed graph."

Submission- 246203312

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

How to combine pieces in the second test case of problem G (one sample way would be enough, please)?

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I just wanna say thank you for making this contest, I was able to solve till F( can't believe I did this )

I think I have very unique solution for problem D: Problem D Solution

I used modular operations for storing single value in map

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Code editor is not working, keeps running and no result, makes the whole experience shit. Cant run test cases.

»
2 года назад, скрыть # |
 
Проголосовать: нравится -11 Проголосовать: не нравится
»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
»
2 года назад, скрыть # |
Rev. 2  
Проголосовать: нравится +14 Проголосовать: не нравится

Here is how you can choose the next type of element to add in problem G.

Two nice observations:

  • This condition must be satisfied: $$$\left|c_1 - c_2\right| \le 1$$$.
  • Think about the problem without elements of types $$$3$$$ and $$$4$$$, then try to insert them in the generated chains.
»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

When I saw other's solutions,I found the problem E very easy. However,I think F is easier than E because I can get the idea to solve it without thinking.(if you know something about graph)

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I was wondering whether this contest gives any rating? I am 401 rated. I have participated and solved 2 problems but haven't got any rating. Can anyone tell me if i'll get any rating?

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Does the following work for F?

Rearranging any of the participants except the last one cannot change the last participant from the permutation. Therefore, we can find the real permutation by checking which one has the last participant only once. Now, that we have obtained the real permutation, we can compare all of the k inputs to the real one and check.

This doesn't work when k == 2 but in that case we can simply check subsequences ignoring the first two numbers.

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Loved the beautiful Stars and Bars problem (G) Got to the solution but didn't submit earlier as I was unsure if it would be rated for me Nonetheless Here's my solution in case any one wants a reference: https://mirror.codeforces.com/contest/1931/submission/246256160 :)

»
2 года назад, скрыть # |
Rev. 3  
Проголосовать: нравится 0 Проголосовать: не нравится

As an expert I failed D: TLE on test 9. Here is my code: 246198274. Could anyone help me with debugging? I think this is O(nlogn).

Edit: This is O(y). Forget it

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

How to solve E? Didn't get any idea at all :(

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I think you should reduce the time limit of this problem. this submission -> https://mirror.codeforces.com/contest/1931/submission/246247517 runs in 1 second. this submission should not get AC because # of testcase is 10000 and this submission is executing a for loop of 200005 every test case. that's more than 2e9 operations.

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

!What is this submission code
is he know the testcase?

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

After successfully wasting 1.5 hour on B i smashed binary search in B

can someone hack it?

246247536

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Video Editorial for problem B (Audio : Hindi) TUTORIAL VIDEO LINK

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Thanks to the authors for an interesting div 3 without clay and with tasks that are fun to solve. After this div and the Cognitive Technologies Olympiad, I realized that the name Gornak in the list of authors => good Olympiad/div.

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Can G be solved using inclusion exclusion ?

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

May I ask why I passed 3 questions but didn't receive a rating in the end? Or who should I seek help from? I really want this rating, thank you.

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

in Problem E , i wrote code which was absolutely right, the only thing i missed was, if number>=10^m then number of digits should be >=(m+1) not >=m (it was pretty close :) )

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

How to solve Problem G?

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

wow that was very cool

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

really enjoyed this contest, particularly problem D. start to see some common patterns on int-mod problem..

»
2 года назад, скрыть # |
 
Проголосовать: нравится +12 Проголосовать: не нравится

my respect to Aleksander Gornak

»
2 года назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

I was getting runtime error (STATUS_ACCESS_VIOLATION) in E, during contest , but after contest when i submitted same solution it got accepted . runtime error during contest code link.
accepted code after contest. Thanks

  • »
    »
    2 года назад, скрыть # ^ |
     
    Проголосовать: нравится +19 Проголосовать: не нравится

    The problem is this for loop here: for(ll i=vect.size()-1;i>=0;i-=2).

    In C++, the return type of std::vector::size is an unsigned integer. When vect is empty, then vect.size() - 1 becomes 0 - 1 which then overflows to UINT_MAX. This causes out of bounds error which is why your program got runtime error. (It seems that this is changed in C++20, which is why your other code got accepted)

    To fix this, you just have to convert vect.size() into any signed integer type. For example for(ll i=(ll)vect.size()-1;i>=0;i-=2). New code

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

One of the best rounds I've ever participated. Thanks to all the writers and testers for offering us such a round.

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

The best div3 round contest I've ever participated!Thank you!

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

when will the rating come out?

»
2 года назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Can anyone tell me where have I made a mistake in these two codes? Only difference I have made from my side is making the capital N,small n? Basically I had initialised all visited array elements to zero in reset function. Thankyou in advance.

1st submission 246198873

2nd submission 246233252

  • »
    »
    2 года назад, скрыть # ^ |
    Rev. 5  
    Проголосовать: нравится +1 Проголосовать: не нравится

    I don't understand why exactly gives you another answer (actually I'm more curious of how didn't get you RTE hahaha weird stuff)

    But the reason why the change works is because in the WA submission, you have the following code:

    vi g[N];
    void reset(){
    	fr(i,0,N){
    		g[i].clear();
    		vis[i]=0;
    		vis1[i]=0;
    	}
    }
    

    and fr is #define fr(i,a,b) for(int (i) = (a); i <= (b); (i)++)

    So, the cycle in reset() will access to the position $$$N$$$. But the arrays g, vis and vis1 are of size $$$N$$$, I change you code putting a -1 and now it gets TLE, that makes a lot of sense, because $$$t = 10^4$$$ and $$$N=2e5+69$$$, so you will do around of $$$2\cdot 10^9$$$ operations just to reset.

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

In Question 4 this code exceeds time limit on test case 33 cant understand why its o(n) approach can someone please help me?

include<bits/stdc++.h>

using namespace std;

define ll long long

int main() {

int t;
cin >> t;
while(t--)
{
    ll n, x, y;
    cin >> n >> x >> y;
    unordered_map<ll, ll> dp;
    ll a[n];
    ll ans = 0;
    for(int i = 0; i < n; i++)
    {
        cin >> a[i];
        ll f = (x - a[i] % x) % x;
        ll l = a[i] % y;
        ans += dp[f*y+l];
        dp[(a[i] % x)*y+a[i] % y] += 1;
    }
    cout << ans << '\n';
}
return 0;

}

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

But may I ask why I still haven't received a rating? It should have been a long time since the hack phase ended. I really want the rating for div3 this time, thanks.

»
2 года назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Why there is no rating change? My rating is less than 1600

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

can anyone just tell me which are valid patterns in G? I can't find any for 1 2 5 10

»
2 года назад, скрыть # |
 
Проголосовать: нравится +2 Проголосовать: не нравится

when it will be rated?

»
2 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I am new to code forces this is my first contest, I have solved two questions still didn't get any rating. Did I miss anything?

»
2 года назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится

Give me my rating pls((

»
2 года назад, скрыть # |
Rev. 3  
Проголосовать: нравится +4 Проголосовать: не нравится

Finally blue. Was a great experience.