Advertisement
Guest User

Untitled

a guest
Sep 15th, 2014
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <math.h>
  4. #include <vector>
  5. #include <string>
  6. #include <utility>
  7. #include <stdio.h>
  8. #include <queue>
  9. #include <fstream>
  10. #include <functional>
  11. #include <cstdlib>
  12. #include <map>
  13. #include <set>
  14. #include <bitset>
  15. #include <string.h>
  16.  
  17. #define MAX_N 5000
  18. #define INF 99999999
  19. #define N_CHAR 130
  20.  
  21. using namespace std;
  22.  
  23. typedef pair<int, int> ii ;
  24. typedef vector< ii > vii ;
  25. typedef vector<int> vi ;
  26.  
  27. int N, freccia[MAX_N],memo[MAX_N][MAX_N];
  28.  
  29. int dp(int start, int end){
  30. int count = 0;
  31. if(start >= end)
  32. return INF;
  33. if(memo[start][end]!=-1)
  34. return memo[start][end];
  35.  
  36. for(int i=start;i<end;i++){
  37. if(i<(start+end)/2)
  38. count += abs(freccia[i]-0);
  39. else
  40. count +=abs(freccia[i]-1);
  41. }
  42. int sol = count;
  43. for(int i=start+2;i<=end-2;i+=2)
  44. sol = min(sol, dp(start,i) + dp(i, end));
  45. //cout <<start<<" "<<end<<" "<<sol<<endl;
  46. return memo[start][end] = sol;
  47.  
  48. }
  49. int Gira(int N, int *freccia){
  50. memset(memo,-1,sizeof memo);
  51. return dp(0,N);
  52. }
  53. /*int main() {
  54. #ifdef EVAL
  55. freopen("input.txt","r",stdin);
  56. freopen("output.txt","r",stdout);
  57. #endif
  58. scanf("%d",&N);
  59. for(int i=0;i<N;i++)
  60. scanf("%d",freccia+i);
  61. //memset(memo, -1, sizeof memo);
  62. printf("%d",Gira(N, freccia));
  63.  
  64. return 0;
  65. }*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement