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

Автор stould, история, 8 лет назад, По-английски

Hello Codeforces community!!

I'll be straight in this topic. I'm trying to solve the problem Nurikabe. But receiving TLE. If helps, the code.

I'm using a bruteforce solution, first of all, I am generating all fixed Polyominoes from size 1 to 9. So, now for each given grid, I do the following things:

  • 1) Storing all interesting points (points with numbers on the grid) in a vector<pair<int, int> > p.
  • 2) Now, I bruteforce with backtracking:
  • 2.1) If(all interesting points already have a polyminoes assiated) check if the actual grid is valid (according to statement) with a DFS // O(n*m)
  • 2.2) Te next step, I'll try to explain with a example:

supposing the bellow grid and a polyomino ###:

.....
..3..
.....

There are three possible ways to place this polyomino:

..... ..... .....
.###. ..### ###..
..... ..... .....

My algorithm follows the above example, for each polyomino[i] (with size equals to interesting point[i]), I try to place the polyomino fixing a cell.

  • 2.3) I check if is valid to use this polimino. //O(polyomino size)
  • 2.4) If is valid, add the polyomino on the grid //O(polyomino size)
  • 2.5) Try the next interesting point
  • 2.6) Remove the polymino from the grid. //O(polyomino size)

Does someone know some prunning to do in this backtracking to avoid TLE or is it a wrong approach ? Any help will be very apreciated, thank you.

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

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

Hello, I want to revive this topic, because this problem is very interesting. Thanks in advance to any help.