社区讨论

序列分块卡常建议

P5397[Ynoi2018] 天降之物参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mk4vlf7f
此快照首次捕获于
2026/01/08 11:16
上个月
此快照最后确认于
2026/01/10 20:15
上个月
查看原帖
1.内存访问:把大数组换成 unsigned short/uint16_t 类型,把 [1,n][1,n] 的值域压到 [1,B][1,B],把 (x,y)(x,y) 映射到 t=x(x1)2+yt=\frac{x(x-1)}{2}+y 上(预处理映射),交换数组两维的顺序使得访问连续。尽力卡进 L3 cache,以提高内存命中率。
2.块长:手动三分找最优的块长,在做完优化后建议重新找最优块长。
3.循环展开:主要对于 query 这种循环次数固定,内存访问较小的循环。建议只对完全符合条件的循环进行展开,使用 C++ 自带的 #pragma GCC unroll 8 自动展开。
4.快读快写:参考 OI Wiki
5.inline:只对一些调用次数多的小函数加上该关键字。
6.C++ 版本:不要用 C++14(GCC 9),建议用 C++23。
7.评测机波动:如果只差 1-2 个点,多交几发应该就过了。建议在评测量较小的时候进行提交(如凌晨或工作日上午)。

回复

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

正在加载回复...