I am getting TLE and I can't handle it.I know the is solved by 0-1 Knapsack.I also try this. I think i have some mistake in my code but I do not found it. Please anyone help me..... Problem :UVA-562 — Dividing coins my code :Cpp_Code
| # | User | Rating |
|---|---|---|
| 1 | Benq | 3676 |
| 2 | Kevin114514 | 3657 |
| 3 | jiangly | 3638 |
| 4 | turmax | 3442 |
| 5 | tourist | 3380 |
| 6 | Um_nik | 3353 |
| 7 | strapple | 3350 |
| 8 | squareOf105 | 3346 |
| 9 | heuristica | 3322 |
| 10 | maroonrk | 3310 |
| # | User | Contrib. |
|---|---|---|
| 1 | Qingyu | 158 |
| 2 | nik_exists | 150 |
| 2 | maspy | 150 |
| 4 | AmShZ | 144 |
| 5 | Um_nik | 143 |
| 6 | Errichto | 139 |
| 7 | adamant | 137 |
| 8 | BledDest | 135 |
| 9 | maroonrk | 133 |
| 10 | qwexd | 130 |
I am getting TLE and I can't handle it.I know the is solved by 0-1 Knapsack.I also try this. I think i have some mistake in my code but I do not found it. Please anyone help me..... Problem :UVA-562 — Dividing coins my code :Cpp_Code
| Name |
|---|



Consider the following test:
100
1 cent 99 times and 500 cents
Your solution will run up to O(2^n) in this case.
Add memo: for each state (i, sum) memoize the answer obtained so that you can get it in O(1) afterwards.
how can i do that???i don't found any idea.
int knap(...)
if dp[i][sum] is already calculated
return dp[i][sum];
if (i == n)
...
...
...
return dp[i][sum] = max(q1, q2)
Note that there are some states that will never be reached. So my advice is to do the following thing:
int knap(...)
if visited[i][sum] return dp[i][sum]
if (i == n)...
visited[i][sum] = true
...
return dp[i][sum] = max(q1, q2)