fork download
  1. /******
  2. author :- Mahmoud Tarek.
  3. *******/
  4.  
  5. #include<bits/stdc++.h>
  6.  
  7. using namespace std ;
  8.  
  9. #define rg register
  10. #define dbg(v) cerr << #v << " " << v ;
  11. typedef long long ll ;
  12.  
  13. int n, m, x, y ;
  14. const int N = 1e3 + 5 ;
  15. char a[N][N] ;
  16. int w[N], b[N] ;
  17. int dp[N][N][4] ;
  18.  
  19. int solve(int i, int color, int k){
  20. if(k < x) return 2 * N * N ;
  21. if(i == m) return 0 ;
  22. int ret = dp[i][k][color] ;
  23. if(~ret) return ret ;
  24. ret = b[i] + solve(i + 1, 0, (color != 0 ? y-1: k - 1)) ;
  25. ret = min(ret, w[i] + solve(i + 1, 1, (color != 1 ? y-1: k - 1))) ;
  26. return ret ;
  27. }
  28.  
  29. int main() {
  30. // freopen("in.txt", "r", stdin) ;
  31.  
  32. cin >> n >> m >> x >> y ;
  33. for(int i = 0 ; i < n ; i++){
  34. for(int j = 0 ; j < m ; j++){
  35. cin >> a[i][j] ;
  36. }
  37. }
  38.  
  39. for(int j = 0 ; j < m ; j++){
  40. for(int i = 0 ; i < n ; i++) b[j] += a[i][j] == '#' ;
  41. w[j] = n - b[j] ;
  42. // cout << w[j] << " " << b[j] << "\n" ;
  43. }
  44.  
  45. memset(dp, -1, sizeof dp) ;
  46. cout << solve(0, 2, y-1) ;
  47. }
  48.  
  49. /*
  50.   Empty set of troubles.
  51. */
Success #stdin #stdout 0.01s 19404KB
stdin
10 5 3 7
.####
###..
##.##
#..#.
.#...
#.##.
.##..
.#.##
#.#..
.#..#
stdout
22