Start with the 3,3 in the top left. There are only 4 possibilities for a 3,3, and one can be immediately ruled out because it's in a corner - if the two empty squares are in the top right and bottom left, then the run of 3 in the top left is immediately trapped. The others are heavily restrained by that 3 below it. If the 3,3 has its empties in the opposite corners, then the lower left run of 3 has to be completed by one more shaded cell to the left of the 3 and is then immediately trapped. Meanwhile, if the 3,3 has two vertically shaded runs, then there will be two shaded cells adjacent to the 3, and we must fill the one between them to complete the 3, but then our 3,3 becomes a 7. So we must have two horizonal rows, which also completes the 3:
Both of these runs now have to escape, and the lower one is going to have to run into the 2 to its right. If it turns down, it will then need to go to the right, violating both the 2 and the 1, so it must head up to meet up with its buddy and continue to escape along the top row:
Now, the shaded cells have to escape between the 4 and the 1,1, so the cell diagonally between them must be shaded. This means that the cell above it and to its right must be unshaded so as not to violate the 1,1. Therefore, the shaded cells we've been following must go down rather than to the right, and our 4 is locked in. Noticing the 0 below it, it must go to the right, which immediately satisfies the 1 as well. We can also complete the 1,1 by adding a cell to its immediate right, which has to escape down along the right edge:
Now, the shaded stretch coming from the top left must continue down, where it becomes adjacent to the 3. At this point, it must either continue to the right or continue down; it cannot try to do both or else it immediately traps itself. If it continues down, it will be forced to run into the 1, where it will also immediately become trapped. Therefore, it has to go to the right, connecting it to the other shaded cells, which now must continue to go down the right side of the grid and complete the other 3:
There are actually a few different ways to continue here, so let's look elsewhere. Notice that the other 3,3 is now also in a corner, so we can probably deduce how it has to go. Once again, the unshaded cells cannot be in the top right and bottom left or else they will trap the shaded cells. This means we can fill in both of those squares, and the top right completes the 1. Now, we can see that the 3,3 cannot be completed horizontally or it will become trapped by that 1. It also cannot be completed vertically, because it will then also satisfy the lower 1 and will not be able to get around it. Thus, it must be completed as such:
Now, if the cell immediately above the 4 is shaded, then that will force the cell to its right to be shaded as well, creating a 2x2 square. So that must be unshaded, locking in the rest of the 4. Looking at the other half of the 3,3 we just filled in, it must obviously go right first, but then if it continues down, it will complete the 1 too early and trap itself. Thus, it must go right again before hitting the corner of the 1 and continuing once more to the right:
At this point, if the bottom left cell were filled in, that would trap the run in the lower left, so the 3 must be completed by the cell above it and to its right. It now has to escape below the 3,2, and if the cell to the 3,2's immediate left is shaded, then it will not be able to get past the 3,2 without creating a run of 4. Therefore, the shaded cells in the bottom left must duck down before that, creating a run of 3 on the last row. We can also complete the 3,2 with this information, as there are now only 2 cells that could still be shaded:
From here, it's clear that the shaded cells adjacent to the + must escape through the cell to the lower left of the 1. With the rest of the cells around the 1 unshaded, this provides only one path for them to connect:
With this, we can note that if the cell left of the 3 is shaded, it will create a 2x2. That leaves only one way to complete the 3 which also completes the 1 and leaves only one way for all the shaded cells to meet up: