社区讨论

这里让我了解一件事

P3604美好的每一天参与者 5已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mi7rn16g
此快照首次捕获于
2025/11/21 02:29
4 个月前
此快照最后确认于
2025/11/21 02:29
4 个月前
查看原帖
莫队的分块 sqrt(n) 并不一定是 最快的
我将块弄成 sqrt(n) 时 一直TLE80分
期间各种卡常,玄学优化,循环展开都用上了 没用
CPP
	ans += p[x^1];
    ans += p[x^2];
    ans += p[x^4];
    ans += p[x^8];
    ans += p[x^16];
    ans += p[x^32];
    ans += p[x^64];
    ans += p[x^128];
    ans += p[x^256];
    ans += p[x^512];
    ans += p[x^1024];
    ans += p[x^2048];
    ans += p[x^4096];
    ans += p[x^8192];
    ans += p[x^16384];
    ans += p[x^32768];
    ans += p[x^65536];
    ans += p[x^131072];
    ans += p[x^262144];
    ans += p[x^524288];
    ans += p[x^1048576]; //2^20
    ans += p[x^2097152]; 
    ans += p[x^4194304]; 
    ans += p[x^8388608]; 
    ans += p[x^16777216]; 
    ans += p[x^33554432]; 
就是循环展开
后来块调成 3*sqrt(n) 就AC了
而且速度约为处理前2倍
话说是为啥呀?
或许是l在块中跑不满 m * 块的大小?

回复

5 条回复,欢迎继续交流。

正在加载回复...