把每个 bi *x + ri ( 0 <= ri <= ai)标记, 输出被标记 0 – N 次的个数
#include#include #include using namespace std; typedef long long LL; const int maxn = 1e6 + 131; int N[20][20]; int Num[maxn]; int main() { int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); memset(Num,0,sizeof(Num)); memset(N,0,sizeof(N)); for(int i = 1; i <= n; ++i) { int x,y; scanf("%d%d",&x,&y); for(int j = 0; j < x; ++j) N[y][j]++; } for(int i = 0; i < m; ++i) { int ans = 0; for(int j = 1; j <= 16; ++j) ans += N[j][i % j]; Num[ans]++; } for(int i = 0; i <= n; ++i) printf("%d\n",Num[i]); } }