Advertisement
_no0B

Untitled

Dec 13th, 2021
801
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1.  
  2. vector < int > vec[N];
  3.  
  4. int PrefixSum(vector < int >& vec , rig , lef)
  5. {
  6.     if(lef <= 0) return vec[rig];
  7.     return vec[rig] - vec[lef-1];
  8. }
  9.  
  10. int main()
  11. {
  12.  
  13.     /// problem: https://lightoj.com/problem/coin-change-iii
  14.  
  15.     dpp[n+1][0] = 1;
  16.     for(int rem = 1 ; rem <= m ; rem++) dpp[n+1][rem] = 0;
  17.  
  18.     for(int cur = n ; cur > 0 ; cur--){
  19.  
  20.         for(int i = 0 ; i < A[cur] ; i++) vec[i].clear();
  21. //        for(int rem = 0 ; rem <= m ; rem){
  22. //            vec[rem % mod].push_back(dpp[cur+1][rem]);
  23. //        }
  24.  
  25.         for(int mod = 0 ; mod < A[cur] ; mod++){
  26.             for(int rem = mod ; rem <= m ; rem += A[cur]){
  27.                 if(vec[mod].size() > 0){
  28.                     vec[mod].push_back(vec[mod].back() + dpp[cur+1][rem]);
  29.                 }
  30.                 else vec[mod].push_back(dpp[cur+1][rem]); /// index = 0
  31.             }
  32.         }
  33.  
  34.         for(int mod = 0 ; mod < A[cur] ; mod++){
  35.             for(int rem = mod , index = 0; rem <= m ; rem += A[cur] , index = index + 1){
  36.                 int sum = PrefixSum(vec[mod] , index , index - C[cur]);
  37.                 if(sum > 0) dpp[cur][rem] = 1;
  38.                 else dpp[cur][rem] = 0;
  39.             }
  40.         }
  41.  
  42.  
  43.     }
  44.  
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement