We hope you enjoyed the contest!
1950A - Stair, Peak, or Neither?
Idea: SlavicG
Tutorial
Tutorial is loading...
Solution
#include <iostream>
void solve() {
int a, b, c;
std::cin >> a >> b >> c;
if(a < b && b < c) std::cout << "STAIR"<< "\n";
else if(a < b && b > c) std::cout << "PEAK"<< "\n";
else std::cout << "NONE" << "\n";
}
int main() {
int tt; std::cin >> tt;
while(tt--)
solve();
}
Idea: flamestorm
Tutorial
Tutorial is loading...
Solution
#include <bits/stdc++.h>
using namespace std;
void solve() {
int n;
cin >> n;
for (int i = 0; i < 2 * n; i++) {
for (int j = 0; j < 2 * n; j++) {
cout << (i / 2 + j / 2 & 1 ? '.' : '#');
}
cout << '\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int tt; cin >> tt; for (int i = 1; i <= tt; i++) {solve();}
// solve();
}
Idea: mesanu
Tutorial
Tutorial is loading...
Solution
#include <bits/stdc++.h>
using namespace std;
void solve() {
int h, m; char c;
cin >> h >> c >> m;
string am = (h < 12 ? " AM" : " PM");
h = (h % 12 ? h % 12 : 12);
cout << (h < 10 ? "0" : "") << h << c << (m < 10 ? "0" : "") << m << am << '\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int tt; cin >> tt; for (int i = 1; i <= tt; i++) {solve();}
// solve();
}
1950D - Product of Binary Decimals
Idea: flamestorm
Tutorial
Tutorial is loading...
Solution
#include <bits/stdc++.h>
using namespace std;
const int MAX = 100'007;
const int MOD = 1'000'000'007;
vector<int> binary_decimals;
bool ok(int n) {
if (n == 1) {return true;}
bool ans = false;
for (int i : binary_decimals) {
if (n % i == 0) {
ans |= ok(n / i);
}
}
return ans;
}
void solve() {
int n;
cin >> n;
cout << (ok(n) ? "YES\n" : "NO\n");
}
int main() {
for (int i = 2; i < MAX; i++) {
int curr = i;
bool bad = false;
while (curr) {
if (curr % 10 > 1) {bad = true; break;}
curr /= 10;
}
if (!bad) {binary_decimals.push_back(i);}
}
int tt; cin >> tt; for (int i = 1; i <= tt; i++) {solve();}
// solve();
}
1950E - Nearly Shortest Repeating Substring
Idea: mesanu
Tutorial
Tutorial is loading...
Solution
#include <bits/stdc++.h>
using namespace std;
void solve() {
int n;
cin >> n;
string s;
cin >> s;
for(int i = 1; i <= n; i++)
{
if(n%i == 0)
{
int satisfy = 2;
for(int j = 0; j < i; j++)
{
for(int k = j+i; k < n; k+=i)
{
if(s[k] != s[j])
{
satisfy--;
}
}
}
if(satisfy > 0)
{
cout << i << endl;
return;
}
satisfy = 2;
for(int j = n-i; j < n; j++)
{
for(int k = j-i; k >= 0; k-=i)
{
if(s[k] != s[j])
{
satisfy--;
}
}
}
if(satisfy > 0)
{
cout << i << endl;
return;
}
}
}
}
int32_t main(){
int t = 1;
cin >> t;
while (t--) {
solve();
}
}
Idea: flamestorm
Tutorial
Tutorial is loading...
Solution
#include <bits/stdc++.h>
using namespace std;
void solve() {
int a, b, c;
cin >> a >> b >> c;
if (a + 1 != c) {cout << -1 << '\n'; return;}
if (a + b + c == 1) {cout << 0 << '\n'; return;}
int curr = 1, next = 0, res = 1;
for (int i = 0; i < a + b; i++) {
if (!curr) {
swap(next, curr);
res++;
}
curr--;
next++;
if (i < a) {next++;}
}
cout << res << '\n';
}
int main() {
int tt; cin >> tt; for (int i = 1; i <= tt; i++) {solve();}
// solve();
}
Idea: SlavicG
Tutorial
Tutorial is loading...
Solution
#include "bits/stdc++.h"
using namespace std;
#define all(x) x.begin(),x.end()
void solve() {
int n; cin >> n;
vector<int> s(n), g(n);
vector<string> aa(n), bb(n);
vector<string> vals;
for(int i = 0; i < n; ++i) {
string a, b; cin >> a >> b;
vals.push_back(a);
vals.push_back(b);
aa[i] = a, bb[i] = b;
}
sort(all(vals));
vals.erase(unique(all(vals)), vals.end());
for(int i = 0; i < n; ++i) {
s[i] = lower_bound(all(vals), aa[i]) - vals.begin();
g[i] = lower_bound(all(vals), bb[i]) - vals.begin();
}
vector<vector<int>> dp(1 << n, vector<int>(n, 0));
for(int i = 0; i < n; ++i) dp[1 << i][i] = 1;
for(int mask = 0; mask < (1 << n); ++mask) {
for(int lst = 0; lst < n; ++lst) {
if(!dp[mask][lst]) continue;
for(int i = 0; i < n; ++i) {
if(mask >> i & 1) continue;
if(s[lst] == s[i] || g[lst] == g[i]) {
dp[mask | (1 << i)][i] |= dp[mask][lst];
}
}
}
}
int ans = 0;
for(int mask = 0; mask < (1 << n); ++mask) {
for(int i = 0; i < n; ++i) {
if(dp[mask][i]) {
ans = max(ans, __builtin_popcount(mask));
}
}
}
cout << n - ans << "\n";
}
main() {
int t = 1; cin >> t;
while(t--) {
solve();
}
}









thanks for the fast editorial
although they are all empty :(
They are updated now with solutions
still waiting for G.
search hamiltonian paths
A fun little exercise for G: Shuffling Songs. Consider this code that finds the longest hamiltonian path of a subset of vertices. What is the time complexity of this code? Is it $$$O(N^3 \cdot 2^N)$$$ or $$$O(N^2 \cdot 2^N)$$$ or $$$O(N \cdot 2^N)$$$? (With proper proof/arguments).
It's O(2^n*n^2) because for each bit mask you iterate every possibile pair of songs.
F can be solved in O(1), so why a + b + c <= 3*10^5??
Do you mean O(log(a)) cause I can't figure out an O(1)
Depends on what you count as a primitive operation, but here's an example of a solution that can be interpreted as O(1): 253827308
__builtin_popcount(n) has a complexity of log(n). As you are calculating __builtin_popcount(a), your code should be considered as O(log(a))
First of all, my code calls
clz, notpopcount. Secondly, it can be misleading to think of it as $$$O(\log)$$$. Explicitly looping over the bits is substantially slower because modern processors have special instructions for bothclzandpopcount.sorry for the confusion with clz. Interesting, learnt something new, ty
can you please explain what's the logic behind Padding variable ?
I first build a complete binary tree out of nodes of degrees 0 and 2. The last level may be partially filled, and
paddingdenotes how many nodes of degree 1 can be inserted immediately above leaves without increasinglevels. After that, the second phase begins where everycinsertions of nodes of degree 1 immediately above leaves increase the number of levels by 1.UPD: I thought of this variable name because padding usually comes between content (nodes of degree 2) and border (nodes of degree 0).
but after subtracting padding, what does increase of (c-1)/c mean b/c i understand that it is 1 degree nodes ,can u please explain ??
It's a common way to round the division result up.
I know it existed, but I didn't find the optimization from $$$\mathcal{O}(a+b+c)$$$ to $$$\mathcal{O}(\log(a))$$$ (or $$$\mathcal{O}(1)$$$) very interesting, and the core idea is the same.
solution you can check this solution for O(1)
bro u used power function is not o(1)
'cause it is div4 :)
thanks you for the quick editorial and good round!
Hello I am gokula kannan siva ji
why am i geting downvoted i am gokula kannan siva ji < : (
don't be sad bro, I upvoted
thank you bro i appreciate it :( they are just mad for no reason
Hey! I am solving G using DFS to find the component of largest size. Why is it giving WA on test 5. Please look at my Submission
Detailed approach:
create a graph with vertices as songs from 1 to n. Two vertices are connected if they have a common artist or genre. Using dfs, find the largest component. Is my approach Wrong??
Consider
Is this graph connected? Can you find a way to arrange all vertices in order?
so how to approach this? i read about hamiltonian path! but i didnt get it! please explain
[EDIT: This solution is incorrect, check end of this comment]
I also did with DFS and DSUs. The trick is do DFS from a node and find the length of the longest "path" from each of them. You can do this by returning (max path length + 1) at each node.
You will notice that I'm setting
dfsvis[node] = false;while exiting the node. This ensures that every path is tried and non-optimal results aren't returned. (Think what if a node that is part of the longest path is visited before we can check for it, that's why we unvisit it)However only this solution will give a TLE when all 16 songs have same genre and writer coz you check every possible path. To counter this, I checked if the max length that I'm getting is the max possible. If it is no point in keeping checking.
Now what is the max possible length? The size of the connected component! I found it using DSU, you can use other methods. To check, at each branch, I add the max length of that branch and the number of visited node and see its it's equal to the size of the connected component.
Submission: 253849577
[HACKED]EDIT: This submission has been hacked and I discovered that my code has n! worst case time complexity.
Let's suppose vertex a and b both have first string(genre) same as first string of c then we can arrange like a-b-c-d-e-f-g.
consider other case like a,d both have second string(writer) same as second string of c then we can arrange like b-c-a-d-e-f-g.
so trying all possible case i guess we always find some arrangement
You don't need to suppose anything. The graph I shared explicitly means that there is nothing common between vertex $$$a$$$ and any other vertex except vertex $$$d$$$. How would you find an arrangement then? Hint : It's not possible.
But if you stick to your strategy of finding maximal connected component size, you'd get an incorrect answer.
This isn't a good counter-example since this graph cannot exist (
amust have an edge with at least one ofc/e, orcmust have an edge toe). Add an edge betweencande, and that suffices for a graph with no Hamiltonian path under the constraints of this problem.Fair enough. The OP had an impression that their algorithm must be true for general graphs as well, hence I randomly constructed a counter example.
But you're correct, given the context of this problem, there should be an edge between
cande. Fixed.what would be the rating for problem E? just wondering
realistically 1200-1300, Clist says its 1500:
https://clist.by/problems/
Maybe 1200-1300
maybe around 1200-1300, maximum ~1500
I loved the problem G. The constraints were a subtle hint already but I tried to build a graph between connected components (an edge between song $$$i$$$ and $$$j$$$ iff genre or artist is same). After looking at the graph, it was pretty evident it is a Hamiltonian Path bitmask DP. Figuring it out was very fun! Great problemset overall for Div4 users.
why is my submission for E wrong tho i tested them all? ;-; here's my submission: 253815920
Can anyone explain the reasoning behind the Time complexity Anaylsis given for D? I didnt get the idea or how those cubic/quantic equations got formed.
can someone explain solution to problem E
brute force check for every factor of n
Notice that the answer can only be a divisor of n, so we have to calculate all the divisors.
Now Try to form a new string (formed by concatenation of a prefix of s), Example
s= "abba"and divisord= 2;prefix = "ab". The new formed string will be"abab". (do the same thing with suffix ="ba") Now compare the 2 formed strings with s, if we find more than 1 difference we move on to the next divisor, else, d is our answer.Hope this helps.
why do we only need to consider concatenation of a prefix or suffix?
why do we ignore a potential substring in the center?
sorry! i just started CF
u can take whatever 2 substrings you want but they should not be overlapping
No. (let d be a divisor of n) The strings must start from an index divisible by d and with length d .
this comment explains in more detail
i supposed that the lenght of substring is a divisor of n
I was a little disappointed with the pretest in task G. It was clearly my fault for underestimating the problem. But I was disappointed that out of 38 pretests, not a single one made simple DFS got Time Limit Exceeded in a task where you intended dp using bitfield as the correct answer.
253766687 << Yes, here are my code with dumb approach, and it passed during competition, and hacked immediately I showed this code to other ones.
Explain why it is impossible to find a component in G with the maximum number of vertices. Essentially, vertices have two types of edges, those connected by author and those connected by genre. If there are > 2 edges at a vertex, then some vertices will form a cycle, where the order is no longer important.
Counter Example
For problem D why cant we just factorize the given number and if the prime factorization contains any digit which are not binary decimal then we will multiply them together lets call it as Product and the numbers which are binary decimal we will leave them as it is. Now if the Product is binary decimal then answer is yes else no ?
if the number is already a binary decimal we will simply return yes
Consider $$$12321 = 3^2\cdot 37^2$$$.
Can someone please try and hack my E solution. Submission Link
My solutions to problems A
O(1)
My solutions to problems B
O((n * 2) ^ 2) In this problem it was possible to notice that when numbers (i/2) and (j/2) that they had to be of the same parity
My solutions to problems C
This code can be considered in O(1) complexity. I break this line that is given for hours and minutes if the time is on the clock less than 12 or equal to 24, then it will always be AM in other cases PM. And then look at the clock
My solutions to problems D
My logic consisted of creating an array that would store all binary decimal numbers. 1. I considered if the number consists only of the digits 1 and 0 then if it consisted it displayed "YES" If not then I took the number n and divided it by all binary numbers, if the cycle cannot divide anymore then the answer is NO, otherwise if it came to the cycle n == 1 then the answer is YES
My solutions to problems E
Let's note that the length of the string k — can only be a divisor of n — the size of the string. In my logic I went by the size that it might be. Then I took cycle 2 which one might say created substrings from i to i + d i — where we are d is the divisor, which we consider to be the length . 3 in a loop I simply checked whether the string matches the condition. I remind you of the condition “Find the length of the shortest string k, such that several (possibly one) copies of k can be concatenated together to form a string the same length as s, and there is at most one different character". Complexity of the algorithm that is implemented sqrt(n) * log(n) * n
F sadly I didn’t solve it, but I had the logic for creating a binary tree, I just didn’t have time to implement it))
My solutions to problems G
In this problem it is more difficult to implement dp than to come up with logic. In this problem you just need to go through all the permutations.
Even the authors gave hints that this is due to permutations. Problem limits
1 <= n <= 16
2^n < 2^16
^ — degree
решение за O(log(a)):
Для начала построим полное бинарное дерево наибольшей высоты, используя вершинки первого типа
Как это сделать: найдем наибольшее n такое, что 2 ^ n — 1 <= a, тогда n — будет высотой этого дерева, а свободных ребер(ребер, к которым надо привязать вершинку) будет 2^n
Тогда есть два случая: либо вершинок первого типа не останется, либо их останется a — 2^n — 1 штук, чего не хватит на новый слой. Если вершинок первого типа не осталось, то привязывая к свободным ребрам вершинки второго типа, мы не увеличим количество этих свободных ребер. Тогда ответ — сeil(b / кол-во свободных ребер)
Если же вершинки первого типа остались, то привяжем их на новый слой. Каждая привязанная вершинка даст +1 к количеству свободных ребер. Так как на новом слое еще остались места, нужно заполнить его вершинками второго типа. Если количество свободных мест после расстановки всех вершинок первого типа больше ил равно количества вершинок второго типа, то ответ — n + 1. Иначе вершинок второго типа слишком много, тогда дозаполним новый слой ими, а дальше начнем заполнять новые слои, пока вершины второго типа еще есть. В этом случае ответ n + 1 + ceil(кол-во оставшихся вершин второго типа после заполнения n+1 го слоя / кол-во свободных ребер)
код: 253819555
How can this solution for D have tle,its constant time
💀
And she's buying a stairway to Heaven ....
In solution of E why are we only checking for prefix or sufix of length l and not and string of length from the middlee?
because atmost 1 char can be different, so if the string is valid we can clearly see that the repeating substring completely matches with the characters of S in either a prefix or suffix or both
Thankss!
F can be solved in O(1) if you know the property of complete binary trees (number of nodes at each level increases by a factor of 2) and a little bit of maths.
253824980
WHY IS THIS WRONG QUES 4
https://mirror.codeforces.com/contest/1950/submission/253824980
You only considered good numbers divisible by 11 and 10, while not all of them have that attribute.
An example of such good numbers, and very possibly the one caused you a WA, is $$$10201$$$ ($$$101^2$$$).
Why didnt Dp worked for the solution D. Its shows TLE. Here is my solution : https://mirror.codeforces.com/contest/1950/submission/253751070. PLEASE HELP
there are no constraints on n over all test cases.
after knowing that c == a+1 in F the problem became very easy and solved it in 3 lines submission. the leaves are what bothered me when solving it in the first place
253841056
My solution in O(1) using maths...
I believe on question E, instead of trying for all n, we can first compute the divisors in O(sqrt(n)) with the following: go until i * i <= n and, if n % i == 0, add to the divisors array not only i, but also n / i.
2nd question was very bad question.I hate such type of questions
Another weak pretests day? What is it with codeforces and weak pretests.... (problem E)
nvm, my assumption was wrong
Adding my live coding + commentary here: https://www.youtube.com/watch?v=kQOWiTvgah0&ab_channel=DecipherAlgorithmswithSaptarshi
I'd be glad if somebody finds it beneficial!
i just want to know that for e question,i submitted my code in c++17 and it got wrong answer on test2,then after contest i checked that test and it was giving right answer on my visualstudiocode compiler and then i submitted that same code in c++20 and it got accepted,now i want to know why is it so and am i responsible for this mistake of choosing compiler or is it a error from codeforces;s side
Problem G was great
Wrote G for 80 minutes, 3KB of non-template code, only to find I went in the wrong direction. I tried to build a bipartite,one side is Genre and the other is Writer, and check for a Euler path, but it doesn't work on example 4 When can I AK Div4......
Is my intuition for G correct, because i am getting wrong answer in test 5, testcase 168. approach is to create a graph, and each category of artists and genre represent an edge between two adjacent nodes, ie.if two nodes have same genre or same artist then there will be edge between them. so after we create a graph we can just find the size of largest connected component and print n-c.(n is total number of nodes)
No, being connected doesn't mean that you can make a simple path that visits all nodes.
can you explain why that might be the case?.Because what i am thinking is, there will always exist a valid simple path in which we can arrange the elements of that particular cc.
This is the simplest counterexample I can think of:
which can be created with this input: https://ideone.com/Lvl1xi
how did you solve this question?
Bitmask DP is probably the simplest, for example if you do top-down DP then you can set $$$dp[i][bitmask]$$$ = maximum length of the path you can further advance when you visited vertices in $$$bitmask$$$ and you're currently at vertex $$$i$$$, then it is $$$max(dp[j][bitmask | (1 \lt \lt j)])+1$$$ where $$$i$$$ and $$$j$$$ are connected by an edge.
It is not necessary that if a component is connected , then you can get an ordering for each vertex in that component following the rule for adjacent songs.
So, instead of size of component , we need to find the longest path in each component.
That gives TLE
name of problem D was a hint about its tag.
?
it was a troll. (DP : dynamic programming) tag of problem D.
Ive seen many solutions for G problem using dp + bitmask. Could someone explain why only using bitmask and trying to take all the vertices you can doesnt work? Here my solution . I just used bitmask + bfs but got wa on test 5
How do you find the optimal way to reorder the elements?
Can anybody explain how this code gets AC? https://mirror.codeforces.com/contest/1950/submission/253676853
He did a brute force and store all the binary decimals till 10^5 size, its genius, I would have never thought of it...
I mean, why is it correct? Is it possible to prove that this solution is correct?
Guys, they wanted a proof, not a step-by-step implementation guidance meant for a toddler...
For the OP: At least until $$$10^5$$$ size, I am observing that for every two distinct coprime binary decimals, their sets of prime divisors also don't intersect. I believe that to cause an unexpected division to fail this kind of solutions, the former condition must not hold.
(This is by far just my observation and intuition, so take it with a grain of salt)
Suppose you can write $$$n$$$ as a product of binary decimals, say $$$a_1, a_2 \cdots a_n$$$ (in increasing order). Now when you delete $$$a_n$$$, the rest are still guaranteed to be binary decimals. However, if you follow another strategy, say like dividing by a smaller number first, some $$$a_i$$$ may no longer be a binary decimal
Edit: nvm, this isn't good enough
Okay, I believe I found a counterexample, suppose we have
$$$1001 \times 1001$$$, now the submission would first delete $$$11 * 1001$$$ = $$$11011$$$, and the remaining factor would be $$$91$$$, so it would be $$$NO$$$ instead of $$$YES$$$, the counterexample is $$$1002001$$$, and I can't really find a smaller one
WOW thanks! I suppose there was a reason I couldn't prove that solution for 2 hours.
I want to use DSU to solve G but failed ,who could tell me why,I want to find the biggest set f[k] and return n-size[k] thank you
A test like this would fail you:
It's clear that this graph is connected, but the answer would be
1rather than0.I also got help from the graph, but I was looking for the length of the longest path in it Can you tell me the reason for WA 3 of this code: https://mirror.codeforces.com/contest/1950/submission/253975967
You are doing the DFS wrong if you want to find the longest path:
vis[a]must be unset at the end ofdfs()function, otherwise it would skip a lot of paths, possibly the longest included.Despite the approach of finding longest path was correct, however, a naive/exhaustive DFS will be inefficient with $$$n \le 16$$$ — as the complexity for the number of any paths in a graph would be $$$\mathcal{O}(n!)$$$, so even at the most optimistic scenario, you would encounter failure at test #44 anyway.
Can anybody tell what's wrong with (G)this submission, I am getting WA on test case 3 , can't find the mistake
O(logn) solution for problem f
Can anyone help me with this solution, how is this different from the one in tutorial?
https://mirror.codeforces.com/contest/1950/submission/253833340
why did you assume it's a monotonic function you have too check for all factors and choose the min one
Thanks for the catch :)
can't g be solved by optimizing the code for finding the longest path in a graph problem
The length that can be filled does not satisfy monotonic conditions, so binary search cannot be used
yeah but i meant can we add some conditions in the dfs code only so that we don't get tle in tc 33
oh sorry, i reply wrong place, by the way i encountered the same problem as you in the competition, and the maximum complexity of dfs is n! And 16!>= 2e11
I have a question. yesterday I sent in and was accepted for four problems in the Division 4 contest while now it turns out that I only sent in one. Why?
Be patient, system testing is currently in progress. Your three others are in the line for rejudging.
what do you mean by rejudging? sorry i am new here
Normally in a Codeforces contest, in-contest submissions are judged by a preliminary testset (or more commonly called pretests) to reduce server load. After the contest ends (and with an extra delay for preparation and such), all AC submissions will be rejudged in a phase called "system test" with the full testset available.
For Div.3, Div.4 and Educational however, the in-contest testset is complete, yet after the contest ends, a 12-hour open hacking phase is presented for community to hack any AC submissions they felt incorrect but the original testset missed. After the hacking phase, those hacks are added to the testset, and after some more delay for preparation, system test will kick in.
Thanks for the complexity analysis in D. Note that most of the 30 numbers are IGNORED so the complexity is far lower than n^0.587.
If you do precomputation then its about $$$O(N^{1.4})$$$ (not a tight bound just a bigger bound than $$$O(N^{1+(log(2)/log(10))}$$$)).
why 2 segments are sufficient for problem E
Because the string after being divided into k parts has only maximum of 1 outlier. If you get a outlier in the 1st segment (
hshahaha) then the 2nd segment musn't be an outlier, so it is enough.Is G NP-complete? G can be reduced into a longest path problem, but there are additional constraints.
A brute solution for D
...
in Ques. E, why do we need to iterate in reverse also?
"**acabab**"
look at the above testcase: Possible length of subarray is 1,2,3 or 6.
If we only consider the subarray starting from beginning, then the answer would have been 6.
But considering from last, we can achieve an optimal answer of 2, where we concatenate ab 3 times to get ababab which satisfies the given condition.
This condition wouldn't have satisfied if we had considered it from the beginning where we would have got acacac which differs from the given string in 2 places and won't be considered for solution. Hope that u have gotten my point.
Sometimes, i feel that i don't think correct to solve the problems like D.Product of Binary Decimals, i didn't think correct and i don't know DP to think about the solution to this problem. How can i fix this problem?
I managed to solve D without DP or precomputation. Although I was unsure about getting hacked.
can you tell me the proof of your solution and tell me why it works ? You basically checked for any factor i of n , i and n/i should both be binary ?
Where s the tutorial for G?
Is it possible to solve G using bitmask dynamic programming?
Yes, you don't even need to think about it as a graph.
My state will be dp(pos,last,mask)
from every state I'll increment pos by taking or not taking that element.
last will determine what my last taken position was.
mask will keep track what positions are already taken.
Do you think it can be solved like this?
Too slow, you don't need to care about the position, mask and last placed is enough.
But without pos, how I'll reach base case which is pos == n? Can you please explain a little bit?
base case is when the mask is all ones, that means you processed all songs
But how will I count the number of songs that I deleted?
That will be the value of the dp.
i just want to know that for e question,i submitted my code in c++17 and it got wrong answer on test2,then after contest i checked that test and it was giving right answer on my visualstudiocode compiler and then i submitted that same code in c++20 and it got accepted,now i want to know why is it so and am i responsible for this mistake of choosing compiler or is it a error from codeforces's side,also i dont think i used anything in my code which would not have worked in c++17 according to me.someone please help
powis a dangerous function in C++ since its precision is really bad, combining with the rounding-down nature of integer casting it might corrupt the prime check procedure. Probably 64-bit processing in CF's C++20 made it a bit more precise so you passed, but C++17 32-bit didn't.A safer / more stable way for square root alone should be
sqrt. You can also try checking fori * i <= n, but careful for overflow (normally if the step is justi++I'm still confident that such overflow won't happen).Can anyone help me? I use dsu(Disjoint set union) to solve problem G, but I don’t know why it always goes Wrong answer on test 5. I spent a long time thinking about it, but I had no idea why.Here is my code:253955348
DSU is a wrong approach. A test like this would fail you:
Correct answer should be
1.Thank you very much, you are absolutely right. I don't fully understand the question, that's stupid.
It's okay, everyone makes mistakes. Keep yourself up and do better next time.
Glad that I could help.
so sorry to ask but can you please check my submission for G. thank you. something is wrong
Since it's a Hamiltonian walk, you should know where that walk is currently stopping at — instead of trying to link an edge to any vertex in the subset — your DP is lacking an attribute for the last vertex of your path.
Bonus: comparing raw strings will TLE eventually (around test 33). Try to optimize that later.
For question g, is it wrong to use the length of the longest path in the graph?
No, it's right
F за $$$O(log(a))$$$ корм.
Here is an elaganto solution with T(N) = O(log(N)), S(N) = O(1) for 1950F — 0, 1, 2, Tree!
I have a beautiful recursive approach for Question D https://mirror.codeforces.com/contest/1950/submission/253808823
Let F(n)=b1*b2*b3*..*bk , where b1,b2,..bk are binary decimal numbers . Then F(n)=b1*F(n/b1)
Thus if we find a binary decimal factor of n then if F(n/b1) is a product of binary decimal numbers then n also is .
It's been 4 days, still no tutorial for G?
Consider a graph there $$$i$$$-th vertex has two values $$$(g_i, w_i)$$$. We can move from $$$i$$$ to $$$j$$$ only if $$$g_i = g_j$$$ or $$$w_i = w_j$$$. Now a simple path in that graph is some permutation we want to get (if vertex is not in our path, we will delete it). We want to delete as many as possible, so we have to find maximum simple path in that graph.
i have done using graph only , could you tell what is wrong with it? https://mirror.codeforces.com/contest/1950/submission/254107386 , i have found the longest path in the graph and substracted it from the total number of edges
https://mirror.codeforces.com/contest/1950/submission/254107386 could anyone help me with this (G question) , my logic is that i have made a graph with vertices having edge on having same genre or same writer or both , and then find the longest path in the graph , but it is giving wrong answer in testcase 3 at 163rd token :/
what is the difference between (a<b && b<c) and if(a<b){ if(b<c){ cout<<"STAIR"<<endl; }else{ cout<<"PEAK"<<endl; }else cout<<"NONE"<<endl;
Try a scenario where
a < bandb >= cand see for yourself.is there any method for the following problem,,,,given a graph and some elements(which are part of the graph),, find whether its possible to obtain a straight chain of the given elements,,, i tried doing this for the shuffling song problem,,but couldnt figure it out
I don't understand why DSU will not work for G, its like grouping the songs with either one pair same? Submission: 322571467
Post a G question written using DFS.