2021-08-05 cf1549

  • D
    • 考虑将条件转为 m ∣ ( a i − a i + 1 ) m|(a_i-a_{i+1}) m(aiai+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) mgcd(aiai+1,ajaj+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[x1][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[x1][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(a1)+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(x2x1,y2y1)。注意到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(x2x1,y2y1)。则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)解决了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值