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

Автор cry, 3 недели назад, По-английски

2037A - Twice

Problem Credits: cry
Analysis: cry

Solution

2037B - Intercepted Inputs

Problem Credits: cry
Analysis: chromate00

Are you a python user and failing test 4?
Solution

2037C - Superultra's Favorite Permutation

Problem Credits: sum
Analysis: chromate00

Solution

2037D - Sharky Surfing

Problem Credits: cry
Analysis: chromate00

Solution

2037E - Kachina's Favorite Binary String

Problem Credits: vgoofficial
Analysis: Intellegent

Solution

2037F - Ardent Flames

Problem Credits: vgoofficial
Analysis: vgoofficial

Solution

2037G - Natlan Exploring

Problem Credits: vgoofficial
Analysis: vgoofficial

Solution
Разбор задач Codeforces Round 988 (Div. 3)
  • Проголосовать: нравится
  • +83
  • Проголосовать: не нравится

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

nice fast editorial

  • »
    »
    5 часов назад, # ^ |
      Проголосовать: нравится -18 Проголосовать: не нравится

    hello can u help me what promblem with this hack : ~~~~~ // this is code

    include

    using namespace std; int main() { cout << 200000 << endl; for(int i = 1; i <= 200000; i++) { cout << 999983 << ' '; } cout << endl; } ~~~~~ thanks

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

      Which problem is this for?

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

      You cannot ends a line with extra space in the input

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

fast editorial !! thankYou

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

damn quick editorial

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

Very Nice contest. :)

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

fast tutorial

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

Damn! Ultra Fast editorial Great Contest. Very good problems, Thanks!

»
5 часов назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится
»
5 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

мой код на b это перебор(i,j) пока не найду i*j==n-2,заваливает на 2 тесте почему

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

    Оцени сложность твоего алгоритма, дело в том что перебор двух значений из n имеет сложность O(n^2), что не подходит для n <= 2 * 1e5. Обычно процессор способен выполнять от 1e7 до 1e8 операций за секунду, тогда за 1 секунду таких входных данных нужно будет сделать 4e+10 операций что не подходит под ограничения по времени.

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

    Ты видимо не учел тот случай, когда i=j.

    Например, есть такой тест:

    6

    1 3 4 5 6 2

    Правильный ответ в данном случае — {1,4}, но твоя программа выводит {2,2}, что не может быть правильным, так как 2 встречается только один раз

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

could anyone help me to figure out what is wrong here:292060911

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

yotta fast edito'

Thankkyou

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

Hi everyone, I apologize for the statement for D being unavailable for ~15 minutes during the round. It turns out I misspelled \textbf which caused the PDF to not generate. :(

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

    For 2037F - Ardent Flames can you please explain which intervals are we talking about here? — sorting the events of intervals starting and ending by time and how are we trying to do binary search?

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

      The intervals are possible $$$p$$$ such that $$$m-|p-x|\geq\lceil\frac{h_i}{q}\rceil$$$. You do binary search on the answer, and if such $$$p$$$ exists, you move the right bound to the mid; otherwise left bound.

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

very cool round, thank u.

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

I liked this contest, especially C exercise was interesting and pretty quirky at first :D Hope to see more div3 contests in the future

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

Can someone take a look at my implementation? (since below is my thinking for E which matches the tutorial exactly)

IMPOSSIBLE if and only if there exists no "01" substring, which is equal to querying the entire string and getting an answer of 0.

Otherwise, there is some "01", and we start querying all the prefixes [1, 2], [1, 3] ... [1, n]. Suppose the first one to give a non-zero answer is [1, i]. Let that answer be R. Then, since all prefixes before [1, i] gave 0 as an answer, the string over [0, i-1] is i-1-R 1's followed by R 0's. Also s[i] must be 1. To determine the suffix s[i+1, n], we query over the prefixes still [1, i+1], [1, i+2] ... [1, n], and, at each query, if the answer increases from the previous one, we have a 1 there, otherwise it is 0 there. In total, we take exactly 1 query for each char in s[2, n], meaning we require n-1 queries.

Implementation: https://codeforces.me/contest/2037/submission/292068546 (skip to very bottom, there is a bunch of template stuff at top)

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

    Bro you should return int in the function

    char(this should be int) interQuery(int a, int b) { std::cout << "? " << a << " " << b << endl; std::cout.flush();

    int r; cin >> r;
    return r;

    }

    Good luck Mate..!!

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

      NOOOOO WTH, I didn't solve E due to that BS!!! :(((( This is genuinely heartbreaking -- the difference between being rank ~1500 and being rank ~500

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

Thanks for the contest, I was glad to participate) Thanks for explaining task G, I was very hesitant when I sent it and got a time limit exceeded on the 5th test

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

D felt like it would be hard problem at first but once u start solving it I found it easier than C

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

I was waaay off for D. i was thinking graphs. Thanks for the learning.

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

As a Pythonist participant, thanks for covering test 4 on Problem B that gives TLE verdict with dictionaries. I too got this verdict: Submission 291964656 Then, using set for tracking a prior occurrence worked on Submission 291974200 , instead of having to rely on the suggested collections.Counter().

Will have to see if this get hacked or failed in any of the main test.

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

    As a Pythonist tester, happy to hear :)

    Edit: Looking at your Solution it is probably still hackable as set uses the same hash function as a dict, :(

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

非常好的题目,使我大脑旋转:D

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

Help me with this please: 292083026

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

    You need to continue processing hurdles until the left bound of the current hurdle surpasses current power-up.

    For your code, consider:

    1
    4 2 100
    5 5
    7 7
    9 9
    11 20
    2 1
    10 20
    

    which your code gives $$$-1$$$ but the answer is $$$2$$$.

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

      Please review my answer too : 292104008 , it also gives output -1 to the above testcase that you have provided and I have run my loop on hurdles not powerups, but I am unable to understand why the answer should be 2 for this testcase and not -1 because after the first hurdle {5 5} the power left should be zero so how will we reach to 10 and get +20 in power.

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

How to implement the Inclusion-Exclusion in G?

I knew about the principle and just did a bunch of for loops which at least look kinda cool :D 292061306 but I see others used other method.

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

    its essentially iterating through the masks, if the number of elements we're grabbing is even, subtract it, otherwise add it

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

    Respect the dedication of coding allat, the usual way of implementing the inclusion exclusion is with bitmasks, iterate from 0, having no elements in the set, to 2^n — 1, having everything in the set, when the i'th bit is 1, it means the i'th element is in the set, now u can notice for odd sizes u add for even sizes u subtract, after calculating the current contribution, if the number of set bits was odd add it otherwise subtract it

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

i think it would be better to have G1 with lower constraint on $$$a_i <= 10^3$$$ to allow
$$$O(n*max(d(a_i)) ^ 2)$$$ solution as there are max 32 factors up to 1000, but anyways nice problems.
Thanks for the contest!

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

I am unable to understand why am i getting idleness time limit exceeded. — https://codeforces.me/contest/2037/submission/292077028. Please someone help.

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

Can someone suggest some binary search problems like F (same or little higher difficulty) please.

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

Hi I have two doubts.

First, why in problem B, using dictionaries in Python give TLE, but AC in C++?

Second, what is wrong in my code for problem E? https://codeforces.me/contest/2037/submission/292049495

I query (1, i) for i from 1 to n, find the first point where this value is non zero, and if this value increases fill in 1, else 0.

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

Can someone help me with this solution for D. 292088654

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

292093110

can someone pls see why this gives a wrong ans and what do I need to change ?

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

What's wrong with my solution for D? it gives tle(test-2). 292076200

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

can somebody explain tourist code for problem G ? whats the mob array ?? whats the intuition behind the solution ?

291975854

or just simply explain whats the mobius function solution

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

    You can see the mobius function as the coefficients of the inclusive-exclusive solution

  • »
    »
    105 минут назад, # ^ |
    Rev. 2   Проголосовать: нравится +6 Проголосовать: не нравится

    Mobius function $$$\mu(n) = (-1)^k \cdot [\alpha_1=\alpha_2=\dots=\alpha_k=1]$$$ where $$$n=\prod\limits_{i=1}^k p_i^{\alpha_i}$$$.

    Useful property of Mobius function is that $$$\sum\limits_{d|n}\mu(d)=[n=1]$$$.

    Consider $$$\texttt{dp}[i]$$$ is the number of paths from $$$1$$$ up to $$$i$$$ and $$$\texttt{sum}[i][x]=\sum\limits_{j=1}^{i}\texttt{dp}_j\cdot [a_j=x]$$$.

    We may calculate $$$\texttt{dp}[i]$$$ as $$$\sum\limits_{j=1}^{i-1}\texttt{dp}_j-\sum\limits_{x=1}^{10^6}\texttt{sum}[i-1][x]\cdot [\gcd(x, a_i)=1]$$$. Let us apply the property of Mobius function for $$$[\gcd(x, a_i)=1]$$$. So that:

    $$$ \begin{array}{rl} \texttt{dp[i]} &= \sum\limits_{j=1}^{i-1} \texttt{dp[j]} - \sum\limits_{x=1}^{10^6} \texttt{sum}[i-1][x] \cdot [\gcd(x, a_i) = 1] \\ &= \sum\limits_{j=1}^{i-1} \texttt{dp[j]}-\sum\limits_{x=1}^{10^6} \texttt{sum}[i-1][x] \sum\limits_{d|\gcd(x, a_i)}\mu(d) \\ &=\sum\limits_{j=1}^{i-1} \texttt{dp[j]}-\sum\limits_{x=1}^{10^6} \texttt{sum}[i-1][x] \sum\limits_{d=1}^{10^6}[d|x]\cdot [d|a_i]\cdot \mu(d) \\ &=\sum\limits_{j=1}^{i-1} \texttt{dp[j]}-\sum\limits_{d=1}^{10^6}[d|a_i]\cdot \mu(d)\sum\limits_{x=1}^{10^6}[d|x]\cdot \texttt{sum}[i-1][x] \end{array} $$$

    For each $$$d$$$ you may maintain $$$\sum\limits_{x=1}^{10^6}[d|x]\cdot \texttt{sum}[i-1][x]$$$ and $$$d$$$ is the divisor of $$$a_i$$$ what makes it possible to compute $$$\texttt{dp}[i]$$$ in $$$\mathcal{O}(\sqrt{a_i})$$$.

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

I loved problem F, any problems like it please? :)

»
119 минут назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Submission

Using Counter still failed me in test case 4 for B (Or maybe there is a mistake in my implementation)

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

    Testcase 4 provokes hash collisions in Python, you can either use a Wrapper to avoid them or use an apporach without hashing.

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

      I am aware but the Editorial mentioned using Counter to avoid TLE

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

        Oh, well it technially works if you do it with strings, but at that point you could just us normal set or dict. To my knowledge Counter uses the same hash function anyways.

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

        My bad, I wrote the note and I'm not really familiar with python. You'd have to use a frequency array of length $$$n$$$.

»
103 минуты назад, # |
  Проголосовать: нравится -7 Проголосовать: не нравится

cry would be blessed if you also post the C++ code rather than just the 3 lines of the explanation in which you think everyone should understand how to solve the problem. Not everyone is a genius like you.

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

I would've ACed D if I used multiset instead of set. That was the only change I made for my code to AC after the contest... :(

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

292066305 292064554 gpt guy solve g in 3 minutes

»
46 минут назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

can we solve D problem using dp approach,with two cases only selecting a particular power or ignoring it

»
25 минут назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

One easy way of preventing tle with sets in Python for B is to just move all the factors of k-2 into another map or set and do the same thing.