### Shayan's blog

By Shayan, 5 weeks ago,

Hi,

Here is the video editorial of all the problems of Educational Codeforces Round 167 (Rated for Div. 2). I hope it helps.

## 1989F — Simultaneous Coloring

• +91

 » 5 weeks ago, # |   +4 I cant understand d, can someone explain the approach
•  » » 5 weeks ago, # ^ | ← Rev. 2 →   +7 First,we can consider that each $c_i$ is independant.So,we can calc the answer of each $c_i$.Then we calc their sums.Then,obviously,we can discover $i$ is important for us to use it if there is $j$,$a_j\le a_i$ and $a_j-b_j\le a_i-b_i$。Because we can use $j$ to replace $i$ and we can save more objects.Therefore,we can let $d_i=a_i-b_i$ and sort $(a_i,d_i)$ in the order of $a_i$.Then a useful $(a_i,d_i)$ means there isn't $j\max a$,we can reduce it to $i-kd$ by use $max a$.$k=\lfloor\frac{i-\max a}{d}\rfloor+1$
•  » » » 5 weeks ago, # ^ | ← Rev. 3 →   0 If you have some spare time, may you please explain why this solution 267833774 using binary search gets TLE? I would think that the complexity is something like 1e6 * log2(1e6) which I think should pass
•  » » » » 5 weeks ago, # ^ |   0 Is the upper_bound function in your code, not being called multiple times. If that is the case, then the worst-case complexity will be N*N*logN. I wrote a similar looking code and faced the same problem. I am not 100% sure about your code though.
 » 5 weeks ago, # |   +1 i tried storing the increasing differnce of a[i] — b[i] (and consecutively increasing a[i]) in maps but am getting TLE.Can someone tell me why my time complexity is getting f-ed.Can someone also tell me the optimizations.my submission :((
•  » » 5 weeks ago, # ^ | ← Rev. 2 →   0 you can use unordered_map
•  » » » 5 weeks ago, # ^ |   0 but i need them differences sorted
•  » » 5 weeks ago, # ^ |   0 since a[i]-b[i] <= 10^6, use an array instead is sufficient
 » 5 weeks ago, # |   +12 i hoper they will add text tutorial too
 » 5 weeks ago, # | ← Rev. 2 →   0 I have a doubt in my submission for problem B where I iterate on the string b and whenever I match a character of it with "a" i increment the ptr j of b and then increase the variable cnt. Finally I print the answer as a.size + b.size -cnt . But it fails somewhere, can anyone help me give a case where my solution fails or the problem with my approach?267685947
•  » » 5 weeks ago, # ^ |   0 1 dbcebd eddedad answer:10 since the first letter of b may not in a.
 » 5 weeks ago, # |   +35 Video editorials is a great addition to codeforces, I hope we normalize it. However text editorials is much important than video editorials so please don't stop doing it.
•  » » 5 weeks ago, # ^ |   +14 I also think so. And I'm Chinese, I can't watch the videos on youtube.
 » 5 weeks ago, # |   0 can anyone tell me in problem B answer is n+m-longest common subsequence of both strings? is it correst
•  » » 5 weeks ago, # ^ |   +2 consider this a-> abc b->xaxbxcx here lcs is 3(abc) so according to you ans must be 3+7-3 but actual ans is 9 ie 3+7-1
•  » » » 5 weeks ago, # ^ |   +1 thanks
•  » » » » 5 weeks ago, # ^ |   +3 why???Answer is 7 for this test case
•  » » » » » 5 weeks ago, # ^ |   +1 no. a is substring.keep this in mind while thinking about subsequence and not to distort continuity of a in making b.
•  » » 5 weeks ago, # ^ |   +1 Well no its not . Suppose you get first strings abcde and the other as bfd , the actual answer of this will be 7 , it is basically the longest sequence of string a which is also subarray of string b.
 » 5 weeks ago, # | ← Rev. 2 →   +1 267826797 ques b) can anyone why its not giving right output or on which test case it fails
•  » » 5 weeks ago, # ^ |   0 consider a test case where a=contest and b=teastthen according to your code answer is 7 but answer is 10
•  » » » 5 weeks ago, # ^ |   0 i am getting ans as 10
•  » » » » 5 weeks ago, # ^ | ← Rev. 2 →   0 I don't know the testcase but it is due to in between in string b when we start checking it is in a or not. I also get wrong answer at same test case but my approach was different
•  » » 5 weeks ago, # ^ | ← Rev. 3 →   0 I don't know dp but your solution fails in the below test case. Test case a = abc and b = bbaacc then according to your code answer is 8 but answer is 7. answer string = bbaabcc
•  » » » 4 weeks ago, # ^ |   0 thanks bro
•  » » » 4 weeks ago, # ^ |   0 bro 7 is the ans from my code
 » 5 weeks ago, # |   0 someone please hack this solution:- https://codeforces.com/contest/1989/submission/267711789
•  » » 5 weeks ago, # ^ | ← Rev. 2 →   +3 This solution also:- 267735052 UPD: This solution is actually correct.
 » 5 weeks ago, # |   0 Nice try! However, not all users on CodeForces are good at English, they may find it difficult to understand this video. May the authors upload text tutorial too?
•  » » 5 weeks ago, # ^ |   +9 The authors are gonna upload the text tutorials. Not uploading the text tutorials in favor of video editorials would be a retarded decision. Video tutorials are just like a bonus for whoever learns better by watching.
 » 5 weeks ago, # | ← Rev. 2 →   0 But Shayan got TLE in his submission 267715088, can we get updated tutorial for D?upd: sorry, he got WA
•  » » 5 weeks ago, # ^ | ← Rev. 2 →   0 I Used the exact same idea. He got wrong answer and not TLE. Maybe he missed some boundary condition. This is my submission using same idea, if it helps 267852076
•  » » » 5 weeks ago, # ^ |   0 Do you know the reason why his solution gives wrong answer? Thanks.
•  » » 5 weeks ago, # ^ |   0 I have corrected his code. This is his code with modifications https://codeforces.com/contest/1989/submission/267873425
 » 5 weeks ago, # |   +8 Disappointing judging for the D problem, I had made an O(n) submission without includingios_base::sync_with_stdio(false); cin.tie(nullptr);and it didn't pass due to TLE, but after including this block and submitting an O(nlogn) code, it did.I am assuming normally optimizations like these should not be a factor but due to the tight constraints, they resulted in TLE.
 » 5 weeks ago, # |   0 Problem Statement for D sucks
 » 5 weeks ago, # |   +6 I hope they add the Text editorials soon
 » 5 weeks ago, # |   0 Please someone point out on which case this code fails for question B 267781357
 » 5 weeks ago, # | ← Rev. 2 →   0 [deleted]
 » 5 weeks ago, # | ← Rev. 2 →   0 [deleted]
•  » » 5 weeks ago, # ^ |   0 Bro when are you starting post contest discussions on youtube
•  » » 5 weeks ago, # ^ |   0 These video tutorials are unofficial, text editorials will be released soon by the contest authors.
 » 5 weeks ago, # |   0 Weak test cases in D. But anyway, good round indeed.
 » 5 weeks ago, # |   0 can someone tell me why i go wrong answer at test 2 267864473
•  » » 5 weeks ago, # ^ |   0 can u explain the idea of your approach
•  » » 5 weeks ago, # ^ |   0 Your idea is incorrect because whenever you get that b[i] == a[j] you are assuming that taking that a[j] will give you the best answer that isn't necessarily true. For example, there is this test case:1 bba abb
•  » » » 5 weeks ago, # ^ |   0 thank you
 » 5 weeks ago, # |   0 This solution for problem D is getting a runtime error on the 9 th testcase. I can't seem to find the issue. Can you guys help!https://codeforces.com/contest/1989/submission/267869614
•  » » 5 weeks ago, # ^ |   +6
•  » » » 5 weeks ago, # ^ |   0 Thank you so much, I didn't know about this before.
 » 5 weeks ago, # | ← Rev. 2 →   0 Nice problems
 » 5 weeks ago, # |   0 Has anyone been able to write a non-DP solution to D?I'm using sorting, and despite all my optimizations, I still get TLE on test 10. Here: https://codeforces.com/contest/1989/submission/267885902
 » 5 weeks ago, # |   0 Can someone tell is it possible to optimize this code for problem D: public static long SmithingSkills2(int[][] arr, int[] metals){ Arrays.sort(arr, new Comparator() { @Override public int compare(int[] o1, int[] o2) { double ratio1 = (double)o1[1] / o1[0]; double ratio2 = (double)o2[1] / o2[0]; if(ratio1 != ratio2){ return Double.compare(ratio2, ratio1); }else{ if(o1[1] == o2[1]) return Integer.compare(o1[0], o2[0]); return Integer.compare(o2[0], o1[1]); } } }); PriorityQueue pq_metals = new PriorityQueue<>(Collections.reverseOrder()); for(int i : metals) pq_metals.add((long)i); long total_ans = 0; for(int[] weapon : arr){ while(!pq_metals.isEmpty() && pq_metals.peek() >= weapon[0]){ long ele = pq_metals.poll(); long a,x,y; a = ele; x = weapon[0]; y = weapon[1]; long low = 1, high = (long)Math.pow(10,3); long n = 0; while(low <= high){ long mid = low + (high - low)/2; if((long)a - (long)mid * x +(long)mid * y >= (long)x){ n = mid; low = mid+1; }else{ high = mid-1; } } n++; total_ans += 2*n; a = a - n*x + n*y; pq_metals.add(a); } } return total_ans; }Code explanation: 1. Sort the weapon array according to their bi / ai values in decreasing order. 2. Build a priority queue for metal ingots (let's call it pq). 3. Start iterating over the sorted weapon array. 4. For the current weapon, the task is to calculate the maximum possible experience for the i-th weapon. 5. To do this, start picking elements (denoted as ele_i) from the priority queue. 6. For the i-th weapon, determine the maximum possible experience, which can be calculated using binary search. 7. Update solution accordingly
•  » » 5 weeks ago, # ^ |   0 I think the expected time complexity is : O(nlogn + mlogm + nlogm * log(1000)).
 » 5 weeks ago, # |   0 Can some one tell me why this is wrong for Bimport java.util.*; public class Main{ public static void main(String args[]){ Scanner sc=new Scanner(System.in); int t=sc.nextInt(); sc.nextLine(); while(t-->0) { String a=sc.nextLine(); String b=sc.nextLine(); int n=a.length(); int m=b.length(); int k=0; if(n>m) { HashMap hashmap=new HashMap<>(n+1); for(int i=0;i0) { hashmap.put(ch1,hashmap.get(ch1)-1); } else{ count=count+1; } } System.out.println(n+count); } else{ HashMap hashmap=new HashMap<>(m+1); for(int i=0;i0) { hashmap.put(ch1,hashmap.get(ch1)-1); } else{ count=count+1; } } System.out.println(m+count); } } } }
 » 4 weeks ago, # |   0 Solution of d provided in video got wrong answer on test case 21
 » 4 weeks ago, # |   0 In problem D, I am getting Runtime error on test 14. Not able to figure out the issue. Pls someone help. My submission: 269094484
 » 3 weeks ago, # |   0 Hello, Could somebody check why my solution is too slow? I get TLE on TEST 7. Thanks :) https://codeforces.com/contest/1989/submission/270892685