2019.06.25【NOI2019】模拟(三维前缀和、三维差分、混合图求欧拉回路)

T1:这题可以暴力+优化水过。

首先明确一点:ans =sum(各个方案中被选中的点的和)/[1/8*n*(n+1)*m*(m+1)*h*(h+1)]^w。接下来我们的任务就是求sum。

而显然sum=sigma(val[i][j][k]*(tot^w-(tot-x)^w))。tot表示所有能选的长方体,x表示这tot个长方体中有几个是包含(i,j,k)的。这条式子的意思其实就是求w次选择长方体中至少有一次选中包含(i,j,k)这个点的方案数。

那么我们现在的任务又变成了求tot和x。

这个我们可以枚举所有的长方体,然后用三维前缀和来判断这个长方体是否合法,然后进行三维差分就可以了。

三维前缀和:s[i][j][k]=(s[i-1][j][k]+s[i][j-1][k]+s[i][j][k-1])-(s[i-1][j-1][k]+s[i-1][j][k-1]+s[i][j-1][k-1])+s[i-1][j-1][k-1]+a[i][j][k]。原理是容斥。

三维差分:以(i,j,k)~(x,y,z)为例。a[i][j][k]++   a[x+1][j][k]、a[i][y+1][k]、a[i][j][z+1]--。以此类推,也是利用容斥原理,注意x、y、z要+1。

 

T2:题解待更新。

求混合图(有以确定方向的边,也有为确定方向的边)的欧拉回路:

1、先给未确定方向的变随机定方向。

2、若有一个点的rd%2!=cd%2,那么无解。

3、若一个点i的rd>cd,则从i向T连(rd-cd)/2,否则从S向i连(cd-rd)/2。

4、做一遍网络流。

5、把所有被经过的在原图是无向边的边反向。

这样就可以了。

 

T3:题解待更新。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值