题面

>CF传送门<

>洛谷传送门<

解法

显而易见,对于一个数\(a_i\),若果它出现在\(f\)序列中,必定\(a_i\)之前的元素要小于\(a_i\),我们设\(cnt_i\)为序列\(a\)中小于\(i\)的元素,

那么得到\(\sum_{i=1}^n a_i \times (\sum_{j=1}^{cnt_i+1} \frac{cnt_i!}{(j-1)!\times(cnt_i-j+1)!} \times (j - 1)! \times (n-j)!)\)

化简得\(\sum_{i=1}^n a_i \times (\sum_{j=1}^{cnt_i+1} \frac{cnt_i!}{(cnt_i-j+1)!} \times (n-j)!)\)

然后提出\(cnt_i!\)得\(\sum_{i=1}^n a_i \times cnt_i! \times ( \sum_{j=1}^{cnt_i+1} \frac{(n-j)!}{(cnt_i-j+1)!})\)

提取一个\((n-cnt_i-1)!\)得\(\sum_{i=1}^n a_i \times cnt_i! \times (n-cnt_i-1) \times ( \sum_{j=1}^{cnt_i+1} (^{n-j}_{n-cnt_i-1}))\)

又可得\(\sum_{i=1}^n a_i \times cnt_i! \times (n-cnt_i-1) \times (^n_{n-cnt_i})\)

所以答案为\(\sum_{i=1}^n \frac{a_i*n!}{n-l_i}\)

代码

#include <cstdio>
#include <algorithm>
#define ll long long
#define MOD 1000000007 using namespace std; ll jc[1000005], jcr[1000005];
ll a[1000005]; int main(){
int n; scanf("%d", &n);
for(ll i = 1; i <= n; ++i)
scanf("%lld", &a[i]);
jc[0] = jcr[n + 1] = 1;
for(int i = 1; i <= n + 1; ++i)
jc[i] = (jc[i - 1] * i) % MOD;
for(int i = n; i >= 1; --i)
jcr[i] = (jcr[i + 1] * i) % MOD;
sort(a + 1, a + n + 1);
ll ans = 0; int cur_val = 0, cnt = 0;
for(int i = 1; a[i] != a[n]; ++i){
(a[i] == a[i - 1]) ? (++cnt) : (cur_val += cnt, cnt = 1);
ans += (((jc[n - cur_val - 1] * jcr[n - cur_val + 1]) % MOD) * a[i]) % MOD, ans %= MOD;
}
printf("%lld", ans); return 0;
}

最新文章

  1. STM32F429 LCD程序移植
  2. mac和virtualbox虚拟机共享
  3. 【UOJ #14】【UER #1】DZY Loves Graph
  4. js点击打开一个固定宽高的网页
  5. this prototype 闭包 总结
  6. OS开发拓展篇—应用之间的跳转和数据传
  7. C#中指针使用总结
  8. rsyslog安装
  9. 基于bootstrap的轮播广告页,带图片和文字
  10. scrapy架构初探
  11. App Extensions篇之Share Extension
  12. 1-web.xml配置说明
  13. CY7C68013 USB接口相机开发记录 - 第二天:驱动修改
  14. 知识点补充 set 深浅拷贝
  15. 理解Linux系统负荷load average
  16. 背水一战 Windows 10 (65) - 控件(WebView): 对 WebView 中的内容截图, 通过 Share Contract 分享 WebView 中的被选中的内容
  17. ios多播委托
  18. django数据库多对多修改对应关系
  19. mysql--Ubuntu下设置MySQL字符集为utf8
  20. 2.1 C++类的定义和声明

热门文章

  1. python 并发编程 多进程 队列
  2. 第十三周学习总结 Java的异常
  3. Java简易实现记事本的打开与保存
  4. Oracle 高版本往低版本备份恢复的方法
  5. SwipeRefreshLayout和RecyclerView类
  6. C函数调用过程原理及函数栈帧分析(转)
  7. C++中的const分析
  8. 数据库设计时,每个表要不要都设置自增主键ID!(转)
  9. CSRF Failed: CSRF token missing or incorrect
  10. Java斗地主