Здравствуйте, сегодня в 5:00 по московскому времени начался очередной SRM, предлагаю после окончания соревнования вести его обсуждение здесь.
| # | User | Rating |
|---|---|---|
| 1 | jiangly | 3810 |
| 2 | Benq | 3676 |
| 3 | Kevin114514 | 3655 |
| 4 | maroonrk | 3463 |
| 5 | strapple | 3390 |
| 6 | Um_nik | 3387 |
| 7 | tourist | 3384 |
| 8 | heuristica | 3322 |
| 9 | turmax | 3319 |
| 10 | jiangbowen | 3291 |
| # | User | Contrib. |
|---|---|---|
| 1 | Qingyu | 155 |
| 2 | nik_exists | 150 |
| 2 | maspy | 150 |
| 4 | Um_nik | 143 |
| 5 | AmShZ | 141 |
| 6 | Errichto | 139 |
| 7 | adamant | 137 |
| 8 | maroonrk | 134 |
| 9 | BledDest | 132 |
| 10 | qwexd | 129 |
|
Gentleman
|
15 years ago,
show (+1)
#
|
|
Gentleman
|
15 years ago,
hide
#
|
0
How to solve the problem 500 (Div 2) ?
→
Reply
|
|
1a1a1a
|
15 years ago,
show
#
|
|
1a1a1a
|
15 years ago,
hide
#
^
|
←
Rev. 2
→
0
1 . pre calculate the amount of lucky numbers on segment [0,N]. (you can do this using dp approach). Code will look like this int cnt[4747+1] = {0}; for(int x = 1; x <= 4747; ++x) cnt[x] = cnt[x-1] + isLucky(x); 2. in order to obtain the amount of lucky numbers on arbitrary segment you can use cnt array. number of lucky numbers on segment[M,N] equals to cnt[N] - cnt[N-1]. 3. to solve problem just simulate the game int ans = 0; for(int aa = a; aa + jLen - 1 <= b; ++aa) { int brus = bLen; for(int bb = aa; bb + bLen - 1<= aa + jLen - 1; ++bb) { brus = min(brus, cnt[bb + bLen - 1] - cnt[bb-1] ); } ans = max(ans, brus); } return ans;
→
Reply
|
| Name |
|---|


