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

Автор ankushmondal1y2t, история, 2 года назад, По-английски

You are given a binary string and you have to find out minimum bits to flip(either from 0 --> 1 or 1 --> 0) to become number of 1's divisible by 4 and palindrome string

example s = 1110 if i flip the last bit 0 to 1 then the string becomes 1111 which is palindrome and the number of 1's divisible by 4

in one operation u can do flip 1 to 0 then 0 to 1 you have to just find out the minimum bits to flip to satisfy the following condition

can anyone tell me its solution or intuition??

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

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

u need to minimize the number of operations ??

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

First we must flip either s[i] or s[n — i + 1] if s[i] != s[n — i + 1]. So let's count number of such i, let it be cnt. Also let number of 1 in s be k. If cnt % 2 = k % 2 and cnt >= min(k % 4, 4 — k % 4) that means answer is cnt. If cnt % 2 != k % 2 that means we have 1 in the middle so we must flip it. Otherwise we can increase cnt using greedy approach.

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

Is it a codeforces problem that I can submit it in problemset ?? sorry for my bad english

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

What you've asked is a simpler version of the attached problem.Link