- D
- 考虑将条件转为 m ∣ ( a i − a i + 1 ) m|(a_i-a_{i+1}) m∣(ai−ai+1),对于两个点 i , j i,j i,j,可以推出 m ∣ g c d ( a i − a i + 1 , a j − a j + 1 ) m|gcd(a_i-a_{i+1},a_j-a_j+1) m∣gcd(ai−ai+1,aj−aj+1),只需要解决区间查询gcd。rmq乱搞即可。
- E
- 考虑原问题就是 ∑ i = 1 n C 3 i x \sum_{i=1}^nC_{3i}^x ∑i=1nC3ix,考虑dp, d p [ i ] [ j ] dp[i][j] dp[i][j]表示n=i,x=j时的答案。
- 转移:
d p [ x ] [ 1 ] = d p [ x ] [ 0 ] + d p [ x − 1 ] [ 0 ] dp[x][1]=dp[x][0]+dp[x−1][0] dp[x][1]=dp[x][0]+dp[x−1][0]
d p [ x ] [ 2 ] = d p [ x ] [ 1 ] + d p [ x − 1 ] [ 1 ] dp[x][2]=dp[x][1]+dp[x−1][1] dp[x][2]=dp[x][1]+dp[x−1][1] - 初始: d p [ 0 ] [ 0 ] = d p [ 0 ] [ 1 ] = d p [ 0 ] [ 2 ] = N dp[0][0]=dp[0][1]=dp[0][2]=N dp[0][0]=dp[0][1]=dp[0][2]=N
- F
- 由于坐标为偶数,可以看出三角形面积S一定时偶数。看到格点三角形想到pike定理S=a+b/2-1,a为三角形内格点数,b为三角形边上格点数。那么 2 S = 2 ( a − 1 ) + b 2S=2(a-1)+b 2S=2(a−1)+b,注意到 a a a为奇数,所以 2 S 2S 2S与 b b b模4同余。
- 所以b为4的倍数。注意到两个点之间的线段上整点个数为 g c d ( x 2 − x 1 , y 2 − y 1 ) gcd(x_2-x_1,y_2-y_1) gcd(x2−x1,y2−y1)。注意到x1,x2,y1,y2都是偶数点,所以令 t = g c d ( x 2 − x 1 , y 2 − y 1 ) t=gcd(x_2-x_1,y_2-y_1) t=gcd(x2−x1,y2−y1)。则t为偶数。t为4的倍数当且仅当x1x2mod4同余且y1y2mod4同余。那么我们可以将一个点 ( x 0 , y 0 ) 转 换 为 ( x 0 m o d 4 , y 0 m o d 4 ) (x_0,y_0)转换为(x_0\mod4,y_0\mod4) (x0,y0)转换为(x0mod4,y0mod4)。这样就可以O(n)解决了。
2021-08-05 cf1549
最新推荐文章于 2022-11-07 16:25:19 发布