№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 3993 |
2 | jiangly | 3743 |
3 | orzdevinwang | 3707 |
4 | Radewoosh | 3627 |
5 | jqdai0815 | 3620 |
6 | Benq | 3564 |
7 | Kevin114514 | 3443 |
8 | ksun48 | 3434 |
9 | Rewinding | 3397 |
10 | Um_nik | 3396 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 156 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
10 | nor | 152 |
Название |
---|
I guess it's a compiler optimization
In your code if $$$g[i][j]$$$ is false, it won't do anything in the loop.
I guess GCC adds
if (!g[i][j]) break;
to the end of line 19Great, but this condition will never happen if the entire grid = 1
You're right, it might be because of random-access and you are defining vectors inside the function (i.e. heap/stack thing).
But I don't think so because I resubmitted with defining in global and no difference.
Thanks for your time, I think now you are curious too :D
Second code gets TLE'd because of some cache shenanigans.
My thoughts that CPU in first submit prefetches full cache line, so access to $$$newdp[mask]$$$ is almost free, but in the other submit, it can be washed out by accessing $$$g[i][j]$$$.
And AFAIK, arrays with len that are powers of two are quite bad for performance reasons on some CPUs, see this link for reference.
I thought that cache stuff don't affect complexity that much.
Now I got it thanks :D
Technically you're right. It doesn't affect the complexity at all. It does affect the constant factor though, which is what's causing the 2.5x speedup here.
No words come after yours sir.
similar thing has happened with me once on cf. i think it is due to more cache miss rate in second one but can't guess why it's happening