推不动式子

我们考虑每一个$w_i$对答案的贡献,因为题目中定义集合的价值为$W(S) = \left | S \right |\sum_{x \in S}w_x$,这个系数$\left | S \right |$可以看作集合中所有的元素(包括$i$自己)对$i$产生了一次贡献,那么我们考虑一个元素$j$对$i$的贡献:

1、$j == i$的时候,相当于求把$n$个小球放到$k$个盒子里面的方案数,为$S(n, k)$($S$表示第二类斯特林数)。

2、$j \neq i$的时候,只有$j$和$i$放在同一个集合里面才能产生贡献,为$S(n - 1, k)$。

然后代入第二类斯特林数的通项公式直接算就好了。

最后的答案就是

$$(S(n, k) + (n - 1)S(n - 1, k)) * \sum_{i = 1}^{n}w_i$$

时间复杂度$O(klogk)$。

另外一种高能的推法:传送门

Code:

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll; const int N = 2e5 + ;
const ll P = 1e9 + ; ll sum = , fac[N], inv[N]; inline ll fpow(ll x, ll y) {
ll res = 1LL;
for (; y > ; y >>= ) {
if (y & ) res = res * x % P;
x = x * x % P;
}
return res;
} inline ll getS(int n, int k) {
ll res = ;
for (int i = ; i <= k; i++) {
ll opt = i & ? -1LL : 1LL;
res = (res + opt * inv[i] % P * fpow(k - i, n) % P * inv[k - i] % P + P) % P;
}
return res;
} int main() {
int n, k;
scanf("%d%d", &n, &k);
for (int i = ; i <= n; i++) {
ll now; scanf("%lld", &now);
sum = (sum + now) % P;
} fac[] = ;
for (int i = ; i <= n; i++) fac[i] = fac[i - ] * i % P;
inv[n] = fpow(fac[n], P - );
for (int i = n - ; i >= ; i--) inv[i] = inv[i + ] * (i + ) % P; ll ans = (getS(n, k) + (n - ) * getS(n - , k) % P) % P;
ans = ans * sum % P;
printf("%lld\n", ans); return ;
}

CF 961G Partitions的更多相关文章

  1. 【题解】Codeforces 961G Partitions

    [题解]Codeforces 961G Partitions cf961G 好题啊哭了,但是如果没有不小心看了一下pdf后面一页的提示根本想不到 题意 已知\(U=\{w_i\}\),求: \[ \s ...

  2. 「CF 961G」Partitions

    题目链接 戳我 \(Solution\) 首先,这个直接推式子.自己推去 所以我们来想一想一些巧妙的方法 \(|S|\sum w_i\) 可以转化为:划分好集合后,每个点都对当前点有\(w_i\)的贡 ...

  3. [Codeforces 961G]Partitions

    Description 题库链接 给你 \(n\) 个不同的元素组成的集合 \(R\) ,每个元素有一个权值 \(w\) .对于一个子集集合 \(S\) ,它的价值为 \(W(S)=|S|\cdot\ ...

  4. [总结]其他杂项数学相关(定理&证明&板子)

    目录 写在前面 一类反演问题 莫比乌斯反演 快速莫比乌斯变换(反演)与子集卷积 莫比乌斯变换(反演) 子集卷积 二项式反演 内容 证明 应用举例 另一形式 斯特林反演 第一类斯特林数 第二类斯特林数 ...

  5. CF memsql Start[c]UP 2.0 B

    CF memsql Start[c]UP 2.0 B B. Distributed Join time limit per test 1 second memory limit per test 25 ...

  6. Amphetamine的cf日记

    之前挂上的 今天填坑 2018.2.14 #462 A 给两个集合,B分别可以从一个集合中选一个数,B想乘积最大,A想最小,A可以删除一个第一个集合中的元素,问最小能达到多少. 这题..水死啦.我居然 ...

  7. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  8. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  9. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

随机推荐

  1. 互联网公司面试必问的mysql题目(下)

    这是mysql系列的下篇,上篇文章地址我附在文末. 什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别? 索引是对数据库表中一列或多列的值进行排序的一种结构.一个非常恰 ...

  2. Android进程间的通信

    1.概述:由于android系统中应用程序之间不能共享内存.因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些.在android SDK中提供了4种用于跨进程通讯的方式.这4种方式正好对应于 ...

  3. matlab中求逆矩阵的高斯消元法实现的代码

    function qiuni =INV_GET(a)N=length(a);M=eye(N);%得到上三角矩?for i=1:N max=a(i,i); A=i; for j=i+1:N if(abs ...

  4. 2018年总结和2019年的Flag

    ---恢复内容开始--- 目前截止到现在工作将近一年半了,今天工作上主要后端主要是用了两种语言,java和Python(2.7),今年完成主要的工作主要使用Python在写一些脚本来满足财务和人资部门 ...

  5. bzoj 1415 [Noi2005]聪聪和可可——其实无环的图上概率

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1415 乍一看和“游走”一样.于是高斯消元.n^2状态,复杂度n^6…… 看看TJ,发现因为聪 ...

  6. (转)安装Android SDK时遇到Failed to rename directory

    安装Android SDK时遇到Failed to rename directory E:\Java\Android SDK\android-sdk_r06-windows\android-sdk-w ...

  7. 执行 rails server 报错 Could not find a JavaScript runtime

    修改第15行 # gem 'therubyracer', platforms: :ruby 去掉注释 执行 bundle install

  8. 【转】Jmeter做功能测试的优点和不足

    利用Jmeter做功能测试有以下优点: ●    不依赖于界面,如果服务正常启动,传递参数明确就可以添加测试用例,执行测试 ●    测试脚本不需要编程,熟悉http请求,熟悉业务流程,就可以根据页面 ...

  9. python开发mysql:表关系&单表简单查询

    一 一对多,多对一 1.1 建立多对一 ,一对多的关系需要注意 先建立被关联的表,被关联的字段必须保证时唯一的 在创建关联的表,关联的字段一定是可以重复的 1.2 示例: 出版社 多对一,多个老师可能 ...

  10. 解决sever 2008中tomcat的报错 init Failed to initialize end point associated with ProtocolHandler ["http-nio-80"]

    错误现象: 01-Aug-2017 14:59:50.140 信息 [main] org.apache.coyote.AbstractProtocol.init Initializing Protoc ...