建议降红,暴力筛法就能过,也没看出跟前缀和和搜索啥关系

P1865 A % B Problem

O(nm)是1e9的,你这明显要用前缀和O(1)查询,这能过是数据水了。 而且不管埃式筛还是线性筛都是橙色的吧...
by OIERljb @ 2024-04-01 20:58:08


有可能是造数据的时候有太多 `l < 1 || r > m` 的数据,如果造一组 1~m 的数据可以卡掉吧……
by zhouzihang1 @ 2024-04-01 20:59:58


我用的,也只是根号筛啊,不是埃氏筛和欧氏筛啊
by asd890123 @ 2024-04-02 17:04:33


而且别忘了,不只O(nm),前面用根号筛保存1到m的数据时,还有O(m^(2/3)),当然也有常数优化
by asd890123 @ 2024-04-02 17:10:42


``` #include <cstdio> #include <cstring> int main(){ bool a[1000005]; int n,m,l,r,s[1000005]; s[0] = 0; scanf("%d%d",&n,&m); memset(a,1,sizeof(bool) * (m + 1)); a[0] = a[1] = 0; for (int i = 2;i * i <= m;i++) if (a[i]) for (int j = i * 2;j <= m;j += i) a[j] = 0; for (int i = 1;i <= m;i++) s[i] = s[i - 1] + a[i]; while (n--){ scanf("%d%d",&l,&r); if (l < 1 || r > m) puts("Crossing the line"); else printf("%d\n",s[r] - s[l - 1]); } return 0; } ``` 现在会正解了,用时总计70ms(所有测试点只和),原先最长273ms,共960ms,但还是建议加强数据
by asd890123 @ 2024-04-18 17:08:43


|