sum

Pandas assign the groupby sum value to the last row in the original table

久未见 提交于 2020-04-13 06:47:23
问题 For example, I have a table A id price sum 1 2 0 1 6 0 1 4 0 2 2 0 2 10 0 2 1 0 2 5 0 3 1 0 3 5 0 What I want is like (the last row of sum should be the sum of price of a group) id price sum 1 2 0 1 6 0 1 4 12 2 2 0 2 10 0 2 1 0 2 5 18 3 1 0 3 5 6 What I can do is find out the sum using A['price'].groupby(A['id']).transform('sum') However I don't know how to assign this to the sum column (last row). Thanks 回答1: Use last_valid_index to locate rows to fill g = df.groupby('id') l = pd.DataFrame

luogu4389 付公主的背包

余生长醉 提交于 2020-04-08 05:00:23
题目链接: 洛谷 题目大意:现在有$n$个物品,每种物品体积为$v_i$,对任意$s\in [1,m]$,求背包恰好装$s$体积的方案数(完全背包问题)。 数据范围:$n,m\leq 10^5$ 这道题,看到数据范围就知道是生成函数。 $$Ans=\prod_{i=1}^n\frac{1}{1-x^{v_i}}$$ 但是这个式子直接乘会tle,我们考虑进行优化。 看见这个连乘的式子,应该是要上$\ln$. $$Ans=\exp(\sum_{i=1}^n\ln(\frac{1}{1-x^{v_i}}))$$ 接下来的问题就是如何快速计算$\ln(\frac{1}{1-x^{v_i}})$。 $$\ln(f(x))=\int f'f^{-1}dx$$ 所以 $$\ln(\frac{1}{1-x^v})=\int\sum_{i=1}^{+\infty}vix^{vi-1}*(1-x^v)dx$$ $$=\int(\sum_{i=1}^{+\infty}vix^{vi-1}-\sum_{i=2}^{+\infty}v(i-1)x^{vi-1})dx$$ $$=\int(\sum_{i=1}^{+\infty}vx^{vi-1})dx$$ $$=\sum_{i=1}^{+\infty}\frac{1}{i}x^{vi}$$ 然后就可以直接代公式了。 1 #include<cstdio> 2

WC2019 T1 数树

杀马特。学长 韩版系。学妹 提交于 2020-04-08 04:48:08
WC2019 T1 数树 传送门( https://loj.ac/problem/2983) Question 0 对于给定的两棵树,设记两颗树 \(A,B\) 的重边数量为 \(R(A,B)\) ,那么 \[Ans=y^{n-R(A,B)} \] Question 1 给定其中一棵树,求第二棵树的所有情况下答案的总和 不妨令 \(y=y^{-1}\) ,最终答案就是 \(y^{-n}y^{R(A,B)}\) 。 在给定 \(A\) 的情况下,只需要统计 \(\sum\limits_B y^{R(A,B)}\) 即可 注意到 \(y^k=[(y-1)+1]^k=\sum\limits_{i=0}^k (y-1)^i \binom{k}{i}\) 及对于确定的 \(A,B\) ,枚举一个边集 \(S\) ,若 \(S\) 中每一条边均为 \(A,B\) 重边,则其贡献为 \((y-1)^{|S|}\) 否则为 \(0\) 特别的,我们把 \(y-1=0​\) 特判掉,因为不存在逆元。 考虑枚举每一个 \(A​\) 的边集,假设一共 \(n-m​\) 条边把 \(n​\) 个点划分成了 \(m​\) 个联通块。 设第 \(i​\) 个联通块有 \(a_i​\) 个点那么它的贡献为 \((y-1)^{n-m}\times​\) 包含这 \(n-m​\) 条边的树的个数。

同色不相邻的方案数求解

蓝咒 提交于 2020-04-08 04:44:39
同色不相邻的方案数求解 引例: 有 \(n\) 种颜色的小球, 每种颜色的小球有 \(a_i\) 个,即一共有 \(\sum_{i=1}^n a_i\) 个小球。 现在要求把这些小球排同色不相邻的方案数求解成一行,要求 同种颜色的小球不相邻 。 求方案数,答案对 \(10^9+7\) 取模。 提交网址: web 前言 下面的算法都只考虑 同色小球之间无区别 的方案数。 即 可重排列 的情况。 如果同色小球之间有区别,为不重排列,那么对应乘上 \(\prod (a_i!)\) 即可。 方法1:动态规划 解法 从前往后枚举每种颜色的小球。 设 \(f_{i,j}\) 表示考虑完前 \(i\) 种小球,存在 \(j\) 个 违法相邻 的方案数。 转移首先考虑将 \(a_i\) 个小球分为 \(k\) 段,一共 \(\binom{a_i-1}{k-1}\) 种方法。 这一共造成了 \(a_i - k\) 个新的不合法情况。 枚举把其中 \(l\) 块插入原先的不合法位置之间,那么一共消除了 \(l\) 个不合法相邻。 这一共有 \(\binom{j}{l}\) 种选择,剩下的块有 \(\binom{sum + 1 - j}{k - l}\) 种选择。 所以转移方程式: \[f_{i,j-l+(a_i-k)} = \sum f_{i,j} \binom{a_i-1}{k-1} \binom

SQL中的sum在何时会返回为null

好久不见. 提交于 2020-04-07 20:46:54
SQL中使用sum的方式是这样的:sum(col_name),如果某列不符合sum的条件(比如某列中含有NULL元素,或者不是数值类型),那么会返回NULL. 有的时候不希望sum的结果为NULL,可以做如下的处理: SELECT COALESCE(sum(col_name), 0) FROM Table 此外还有ISNULL(SQL Server),NVL(Oracle)以及IFNULL(MySQL)的用法,起到同样的效果. 注: NULL 值是遗漏的未知数据。 默认地,表的列可以存放 NULL 值。 参考文章: https://www.w3school.com.cn/sql/sql_null_values.asp 来源: https://www.cnblogs.com/Stephen-Qin/p/12655564.html

【luogu P1471】方差

丶灬走出姿态 提交于 2020-04-07 08:26:32
https://www.luogu.org/problem/show?pid=1471 一眼就能看出是线段树/树状数组题目了。 求平均不用说,线段树/树状数组维护区间和即可。 方差怎么求?先变换下方差公式: 可以看到区间的方差可以由区间内每个数的和与每个数的平方的和得来,用一棵线段树维护这两个东西就好了,好像写不了标记永久化。 当然写两棵普通的线段树/树状数组分别维护这两个东西或者分块暴力也可以 不过我写挂了 。 区间加的时候如何维护平方的和: 注意这里的 是指没有加之前的和。 #include <algorithm> #include <iostream> #define maxn 100005 using namespace std; namespace seg { struct node { int ln, rn, mn; long double sum[2], mark; } seg[maxn * 4]; void push_down(int p) { if (seg[p].mark && seg[p].ln != seg[p].rn) { seg[p * 2].mark += seg[p].mark; seg[p * 2].sum[1] += 2 * seg[p].mark * seg[p * 2].sum[0] + (seg[p * 2].rn - seg[p * 2]

程序设计原则:把计算过程交给计算机

Deadly 提交于 2020-04-07 00:36:56
程序设计原则:把计算过程交给计算机 一道简单的数学题 首先,我们先看一道很简单的数学问题,求出 1000 以内所有 3 或 5 倍数的数字的和。 把计算过程,交给计算机 写程序的一个目的,就是减少我们人类在解决问题中的具体计算过程 #include <stdio.h> int main() { int sum = 0; for (int i = 1; i < 1000; i++) { sum += i * (i % 3 == 0 || i % 5 == 0); } printf("%d\n", sum); return 0; } 这段程序中,循环遍历 1000 以内的所有整数,然后把 3 或 5 的倍数累加到变量 sum 中,最后输出 sum 变量的值,就是 1000 以内,所有 3 或 5 的倍数和。 其中有一个编程技巧,就是利用条件表达式 (i % 3 == 0 || i % 5 == 0) 与数字 i 相乘,条件表达式等于 1 的时候,说明 i 是 3 或 5 的倍数,sum 累加的值就是 i * 1 就是 i 的值;而当条件表达式不成立的时候,sum 累加的值就是 0。掌握这个编程技巧,关键是理解条件表达式的值。 数学思维:提升计算效率 #include <stdio.h> int main() { int sum3 = (3 + 999 / 3 * 3) * (999 /

树结点数

本小妞迷上赌 提交于 2020-04-06 11:02:21
树结点数 0.概念 树(tree)指每个结点只有一个前件(也称父结点)、有多个后件(也称子结点)的非线性结构。没有父结点的结点称为根结点,每棵树只能有一个根结点;没有子结点的结点称为叶子结点。树结构中,一个结点拥有子结点的个数称为该结点的度;所有结点中最大的度称为这棵树的度。 1.结点数计算 假设树度为 x 的结点数为 n x ,则一棵树可以表示为: x 0 1 2 3 ... nₓ n₀ n₁ n₂ n₃ ... 根据树的形成过程,每增加一个度为 x 的结点,总结点数将增加 x 个。所以: \[Sum = \sum n_i = 1 + \sum i \times n_i \] 其中 Sum 表示树的总节点数。 同理,每增加一个度为 x 的结点,叶子节点数将增加 x-1 个。所以: \[Sum' = n_0 = 1 + \sum n_i(i-1) = 1 + \sum_{i=2} n_i(i-1) \] 其中 Sum' 表示树的叶子结点数。 2.二叉树特例 二叉树度小于3的树。即每个结点最多有两个子结点。有如下性质: 第k层上最多有 2 k-1 个结点。 k层二叉树最多有 2 k -1 个结点。 叶子结点总比度为2的结点多一个。 \[Sum' = 1 + \sum_{i=2} n_i(i-1) = 1 + n_2 \] 具有n个结点的二叉数深度最少为 [log 2 (n+1)]+1

HDU 1406 完数

无人久伴 提交于 2020-04-05 23:33:04
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1406 Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。 本题的任务是判断两个正整数之间完数的个数。 Input 输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1<num1,num2<10000) 。 Output 对于每组测试数据,请输出num1和num2之间(包括num1和num2)存在的完数个数。 Sample Input 2 2 5 5 7 Sample Output 0 1 题解: 运用枚举的思想,对每一个数字都进行判断是不是完数。 代码: #include <bits/stdc++.h> using namespace std; int f(int n) { int sum=0; for(int i=1;i*i<=n;i++) { if(n%i==0) { if(i==1) sum+=1; else { if(i!=n/i) sum=sum+i+n/i; else sum+=i; } } } if(sum==n) return 1; return 0

并查集题目整理

若如初见. 提交于 2020-04-04 09:15:02
并查集 之前写最小生成树的时候对这一部分的知识也并没有十分详细的整理 近天做了一些用到并查集的题目,来整理一下 知识回顾 首先,先来回顾一下有关并查集的内容 <1> 定义 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。 <2>初始化 把每个点所在集合初始化为其自身。 通常来说,这个步骤在每次使用该数据结构时只需要执行一次,无论何种实现方式,时间复杂度均为O(N)。 <3>查找 查找元素所在的集合,即根节点。 <4>合并 将两个元素所在的集合合并为一个集合。 通常来说,合并之前,应先判断两个元素是否属于同一集合,这可用上面的"查找"操作实现。 主要处理的是有关这一部分的两个例题 Luogu P1550 [USACO08OCT]Watering Hole G 解题思路: 这个题给我的第一印象是最小生成树的Kruscal 但是仔细一读题发现其实有许多小的细节与最精简的Kruscal是有差别的 例如题目中有一个挖井的操作 那就讲问题拆开来看 part1:如何解决连牧场的操作 这里不难想到去直接最小生成树维护 很显然牧场之间的连线满足生成树的性质 part2:如何解决挖井的问题 考虑在不影响part1的前提下实现