Advertisement
pgapr14

algoH2 wrong!!

Nov 2nd, 2015
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <map>
  5.  
  6. #define LL long long
  7. #define ULL unsigned LL
  8. #define med(a,b,c) (a+b+c > 1)
  9.  
  10. using namespace std;
  11. string s;
  12. int shots[300][300],
  13. //    col[300][300],
  14.     Arr[2][300],
  15.     burst, n;
  16.  
  17. int Min(int a, int b){
  18.     if(a<b)
  19.         return a;
  20.     return b;
  21. }
  22.  
  23. void clean(){
  24.     for(int i=0; i<300; i++){
  25.         for(int j=0; j<300; j++){
  26.             shots[i][j]=0;
  27.         }
  28.     }
  29. }
  30.  
  31. int minimum(int l, int r, int burst){
  32.     int ans, combo, splitMin, i;
  33.  
  34.     for(i=0; i<r-l; i++){
  35.         splitMin = Min(shots[l][l+i] + shots[l+i+1][r] , splitMin);
  36.     }
  37.  
  38.     if(Arr[0][l] == Arr[0][r]){
  39.         int tmp = Arr[1][l] + Arr[1][r];
  40.         if(tmp>=burst)
  41.             tmp = 0;
  42.         else
  43.             tmp = burst - tmp;
  44.  
  45.         combo = tmp + shots[l+1][r-1];
  46.     }
  47.  
  48.     ans = Min(combo, splitMin);
  49.  
  50.     return ans;
  51. }
  52.  
  53. int solve(int l, int r, int burst){
  54.     int ans;
  55.  
  56.     for(int i=l; i<=r; i++){
  57.         if(Arr[1][i]>=burst){
  58.             shots[i][i] = 1;
  59.         } else {
  60.             shots[i][i] = burst - Arr[1][i];
  61.         }
  62.     }
  63.  
  64.     for(int i=l+1; i<=r; i++){
  65.         for(int j = i; j<=r; j++){
  66.             shots[j-i][j] = minimum(j-i, j, burst);
  67.         }
  68.     }
  69.  
  70.     ans = shots[l][r];
  71.  
  72.     return ans;
  73. }
  74.  
  75. int main(){
  76.     cin>>n;
  77.  
  78.     while(n--){
  79.         cin>>burst;
  80.         cin>>s;
  81.         int index = 0;
  82.         Arr[0][0] = s[0];
  83.         Arr[1][0] = 1;
  84.         for(int i=1; i<s.length(); i++){
  85.             if(s[i] == Arr[0][index])
  86.                 Arr[1][index]++;
  87.             else{
  88.                 index++;
  89.                 Arr[0][index] = s[i];
  90.                 Arr[1][index] = 1;
  91.             }
  92.         }
  93.         cout<<solve(0, index, burst);
  94.  
  95.         clean();
  96.     }
  97.  
  98.  /*   for(int i=0; i<10; i++){
  99.         cout<<Arr[0][i]<< " " <<Arr[1][i]<<endl;
  100.     }*/
  101.  
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement