求和符号

Scala集合笔记

混江龙づ霸主 提交于 2020-04-02 21:53:03
Scala的集合框架类比Java提供了更多的一些方便的api,使得使用scala编程时代码变得非常精简,尤其是在Spark中,很多功能都是由scala的这些api构成的,所以,了解这些方法的使用,将更加有助于我们学习Scala和Spark: List,Map,Set的一些api的用法如下: Java代码 /** * Scala 集合测试 */ def collectionTest(): Unit ={ val map =Map( "red"-> "红色", "green"-> "绿色") val colors = List( "red", "green", "blue") //map函数测试 ,打印长度 val size=colors.map( (f:String) => f.size ); val data=List( 1, 2, 5, 3); //reduce函数测试 求和 val r=data.reduce((a:Int,b:Int)=>a+b); println(size, " ",r) //打印取值 println(map( "red")) //判断是否存在 println(map.contains( "white")) //遍历map集合 for(pair<-map) println(pair) //去重打印 println(List( 3, 2, 3, 4, 5)

【校内模拟】矩阵求和(组合数转下降幂转自然幂)(斯特林数)(树状数组)

给你一囗甜甜゛ 提交于 2020-02-06 05:12:44
简要题意: 一个 n × m n\times m n × m 矩阵,第 i i i 行第 j j j 列的权值为 ( i − 1 ) ⋅ m + j (i-1)\cdot m + j ( i − 1 ) ⋅ m + j ,需要你支持一下三种操作: R,交换两行 C,交换两列 Q,询问对一个子矩阵求 k k k 次二维前缀和后矩阵中元素之和。 数据范围 n , m , Q ≤ 1 e 5 , k ≤ 10 n,m,Q\leq 1e5,k\leq 10 n , m , Q ≤ 1 e 5 , k ≤ 1 0 题解: 容易发现一个点的权值只和行号和列号有关,容易想到行列分开维护。 询问的子矩形用 ( l x , l y ) − ( r x , r y ) (lx,ly)-(rx,ry) ( l x , l y ) − ( r x , r y ) 表示。 朴素一点考虑求出来的前缀和,考虑每个位置被求了多少次,可以表示为: A n s = ∑ i = l x r x ∑ j = l y r y ( k + r x − i k ) ( k + r y − j k ) ( a i + b j ) Ans=\sum_{i=lx}^{rx}\sum_{j=ly}^{ry}{k+rx-i\choose k}{k+ry-j\choose k}(a_i+b_j) A n s = i = l x ∑ r x

7-1 N个数求和

旧巷老猫 提交于 2020-02-02 15:18:08
本题的要求很简单,就是求 N 个数字的和。麻烦的是,这些数字是以有理数 分子/分母 的形式给出的,你输出的和也必须是有理数的形式。 输入格式: 输入第一行给出一个正整数 N ( ≤100)。随后一行按格式 a1/b1 a2/b2 ... 给出 N 个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。 输出格式: 输出上述数字和的最简形式 —— 即将结果写成 整数部分 分数部分 ,其中分数部分写成 分子/分母 ,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。 输入样例1: 5 2/5 4/15 1/30 -2/60 8/3 输出样例1: 3 1/3 输入样例2: 2 4/3 2/3 输出样例2: 2 输入样例3: 3 1/3 -1/6 1/8 输出样例3: 7/ 24 解题思路:   按照平时算数学题一样,先对两个分数进行合并,然后将结果先化简然后与下一分数重复上述步骤。注:若不先化简,可能导致数太大,编译时间过长。 回顾总结: 一:c++与c结合,解决符号‘/’问题。若不用scanf解决   如:scanf("%d/%d",&a,&b);   可以多定义一个char字符,    如:int a,b;char c;   cin>>a>>c>>b; 二:gcd函数与lcm函数 解题代码: #include<cstdio>

L1-009 N个数求和

寵の児 提交于 2019-12-23 04:48:01
本题的要求很简单,就是求 N 个数字的和。麻烦的是,这些数字是以有理数 分子/分母 的形式给出的,你输出的和也必须是有理数的形式。 输入格式: 输入第一行给出一个正整数 N ( ≤100)。随后一行按格式 a1/b1 a2/b2 ... 给出 N 个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。 输出格式: 输出上述数字和的最简形式 —— 即将结果写成 整数部分 分数部分 ,其中分数部分写成 分子/分母 ,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。 输入样例1: 5 2/5 4/15 1/30 -2/60 8/3 输出样例1: 3 1/3 输入样例2: 2 4/3 2/3 输出样例2: 2 输入样例3: 3 1/3 -1/6 1/8 输出样例3: 7/24思路:直接用两个数组分别存分子和分母后通分相加再化简,考虑到通分时数据可能会爆int,所以用long long,写的略微有点复杂...... 1 #include<stdio.h> 2 #include<math.h> 3 long long int find( long long int a,long long int b);//找两个数的最大公约数(最后化简用) 4 long long int find1(long long int a, long

Scala集合笔记

扶醉桌前 提交于 2019-12-07 20:44:53
Scala的集合框架类比Java提供了更多的一些方便的api,使得使用scala编程时代码变得非常精简,尤其是在Spark中,很多功能都是由scala的这些api构成的,所以,了解这些方法的使用,将更加有助于我们学习Scala和Spark: List,Map,Set的一些api的用法如下: /** * Scala 集合测试 */ def collectionTest(): Unit ={ val map =Map( "red" -> "红色" , "green" -> "绿色" ) val colors = List ( "red" , "green" , "blue" ) //map函数测试 ,打印长度 val size=colors.map( (f:String) => f.size ); val data= List ( 1 , 2 , 5 , 3 ); //reduce函数测试 求和 val r=data.reduce((a:Int,b:Int)=>a+b); println(size, " " ,r) //打印取值 println(map( "red" )) //判断是否存在 println(map.contains( "white" )) //遍历map集合 for (pair<-map) println(pair) //去重打印 println( List ( 3 ,

PyTorch之爱因斯坦求和约定

匿名 (未验证) 提交于 2019-12-02 23:56:01
PyTorch之爱因斯坦求和约定 文章目录 PyTorch之爱因斯坦求和约定 关于`einsum`维度记忆的小技巧 网上关于这个函数: torch.einsum 的介绍已经很多了,这里列出我重点看过的一篇文章。 einsum满足你一切需要:深度学习中的爱因斯坦求和约定 这篇文章写的非常棒,很详细。 这里写个简单的例子,对于论文 A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning 中的下面的式子,可以很方便的借助该函数搞定。 先写一个一般的思路。首先要注意PyTorch中的维度顺序为 N, C, H, W 学习PyTorch的关键是要记住这个顺序。对于原文来说,下表s、t、i、j分别表示长、宽、通道、通道,所以对于这里提到的张量 F s , t , i 1 F^1_{s,t,i} F s , t , i 1 和 F s , t , j 2 F^2_{s,t,j} F s , t , j 2 各自实际上是对应于形状为 [b, m, h, w] 和 [b, n, h, w] 的。而这里的累加符号是对于 s s s 和 t t t 进行的计算,所以实际上可以转化为矩阵乘法。 [b, m, hxw] * [b, hxw, n] = [b, m, n]

[C1W3] Neural Networks and Deep Learning - Shallow neural networks

匿名 (未验证) 提交于 2019-12-02 23:47:01
神经网络中,我们将使用上标方括号的形式表示这些值来自于哪一层,有趣的是在约定俗成的符号传统中,在这里你所看到的这个例子,只能叫做一个两层的神经网络。原因是输入层是不算入总层数内,所以隐藏层是第一层,输出层是第二层。第二个惯例是我们将输入层称为第零层,所以在技术上,这仍然是一个三层的神经网络,因为这里有输入层、隐藏层,还有输出层。但是在传统的符号使用中,如果你阅读研究论文或者在这门课中,你会看到人们将这个神经网络称为一个两层的神经网络,因为我们不将输入层看作一个标准的层。 单个样本时,向量化图示 单个样本时,运用四行代码计算出一个简单神经网络的输出(预测)。 上一节使用的是单个样本,如果把单个样本的向量横向堆叠成矩阵,就可以计算全部样本的神经网络输出(预测)。 Pros and cons of activation functions 结果表明,如果在隐藏层上使用 tanh (双曲正切)函数效果总是优于 sigmoid 函数。因为函数值域在 -1 和 +1 的激活函数,其均值是更接近 0 均值的,而不是0.5,这会使下一层学习简单一点。 在讨论优化算法时,有一点要说明:我基本已经不用 sigmoid 激活函数了,tanh 函数在所有场合都优于 sigmoid 函数。 但有一个例外:在二分类的问题中,对于输出层,想让的数值介于 0 和 1 之间,而不是在 -1 和 +1 之间