题目描述:

\(1<=n,ai<=5*10^5\)

题解:

我是弱智我不会期望线性。

设\(E(a[i])\)表示第i个期望被减的个数。

\(E(a[1])=a[1]\)

不难发现\(E(a[i])(i>1)\)之间互不影响,其实这很难。

考虑固定这两个,它们两个选到的概率一样,选到其它的就无视就好了。

那么只用考虑\(n=2\)的情况,这个直接暴力枚举\(a[1]\)结束时\(a[i]\)有几个,乘个\(1\over 2\)的几次方和组合数,式子如下:

\(=a[i]-\sum_{i=0}^{a[i]-1}C_{a[1]-1+i}^{a[i]-1}*{1\over2}^{a[1]+i}*(a[i]-i)\)

可以用递推的方法依次求出\(a[i]=1,2,3…\)的答案。

时间复杂度:\(O(n+max(a))\)

Code:

#include<bits/stdc++.h>
#define fo(i, x, y) for(int i = x, B = y; i <= B; i ++)
#define ff(i, x, y) for(int i = x, B = y; i < B; i ++)
#define fd(i, x, y) for(int i = x, B = y; i >= B; i --)
#define ll long long
#define pp printf
#define hh pp("\n")
using namespace std; const int mo = 323232323; ll ksm(ll x, ll y) {
ll s = 1;
for(; y; y /= 2, x = x * x % mo)
if(y & 1) s = s * x % mo;
return s;
} const ll ni2 = ksm(2, mo - 2); const int N = 1e6 + 5; int n, a[N]; ll fac[N], nf[N], a2[N]; void build(int n) {
fac[0] = 1; fo(i, 1, n) fac[i] = fac[i - 1] * i % mo;
nf[n] = ksm(fac[n], mo - 2); fd(i, n, 1) nf[i - 1] = nf[i] * i % mo;
a2[0] = 1; fo(i, 1, n) a2[i] = a2[i - 1] * ni2 % mo;
} ll C(int n, int m) {
return fac[n] * nf[m] % mo * nf[n - m] % mo;
} ll f[N], g[N]; int main() {
freopen("b.in", "r", stdin);
freopen("b.out", "w", stdout);
scanf("%d", &n);
fo(i, 1, n) scanf("%d", &a[i]);
build(1e6 + 2);
fo(i, 0, 5e5) {
if(i) f[i] = f[i - 1], g[i] = g[i - 1];
f[i] = (f[i] + a2[a[1] + i] * C(a[1] + i - 1, i)) % mo;
g[i] = (g[i] + a2[a[1] + i] * C(a[1] + i - 1, i) % mo * i) % mo;
}
ll ans = a[1];
fo(i, 2, n) {
ans += a[i];
ans -= (f[a[i] - 1] * a[i] - g[a[i] - 1]) % mo;
}
ans = (ans % mo + mo) % mo;
pp("%lld\n", ans);
}

最新文章

  1. Python 【第十一章】 Django模版
  2. 一个快速double转int的方法(利用magic number)
  3. hdu 5104 素数打表水题
  4. Windows hosts (使用方法 &amp;&amp; 不定期更新)
  5. Web应用程序项目以配置使用IIS。未找到Web服务器
  6. CPU 硬盘性能到底相差多少
  7. Android权限安全(8)ContentProvider基于URI的安全
  8. angularjs使用directive实现倒计时按钮
  9. Excel VLOOKUP等使用记录
  10. 原创|1分钟搞定 Nginx 版本的平滑升级与回滚
  11. 以API方式调用C# dll,使用OneNote2013 sp1实现OCR识别本地图片
  12. Linux 防火墙:Netfilter iptables
  13. RDS MySQL InnoDB 锁等待和锁等待超时的处理
  14. %SystemRoot%
  15. SqlServer2005 海量数据 数据表分区解决难题
  16. 使用CSS3 @media 设置页面自适应
  17. css实现 显示一行文字,超出用...代替
  18. xcode7 安装 KSImageNamed
  19. sql:将字符类型字段转换成数字并排序
  20. Chrome浏览器优化技巧

热门文章

  1. 04-树5 Root of AVL Tree(25 分)
  2. oracle 查看所有表的数据量并排序
  3. 旋转屏幕导致Activity重建问题的解决办法
  4. 5. zabbix服务端添加fping
  5. MySQL coalesce函数用法说明(转)
  6. laravel定义全局变量
  7. 使用LoadRunner监控Apache
  8. ajax 通过回调函数获取异步数据
  9. Java 实例 - 连接字符串
  10. python 根据字典的键值进行排序