sum

[HAOI2016]找相同字符

∥☆過路亽.° 提交于 2020-02-06 05:17:36
一、题目 点此看题 二、解法 一般这种题都是在第一个字符串上建后缀自动机,然后第二个去乱搞。 我们先处理出每个节点的 r i g h t right r i g h t 集合大小 s i z siz s i z ,然后把第二个串丢进去匹配,设匹配到的点为 p p p ,长度为 l e n len l e n ,则匹配到这个点的贡献为: ( l e n − l e n [ f a [ p ] ] ) × s i z [ p ] (len-len[fa[p]])\times siz[p] ( l e n − l e n [ f a [ p ] ] ) × s i z [ p ] 匹配完之后还要以自动机上的节点再算一遍贡献(因为匹配时我们只算了下面的,没有算上面的),我们再匹配时对 p p p 点打标记,设 s u m [ i ] sum[i] s u m [ i ] 为 i i i 子树内的标记个数(不包含 i i i ),那么这个点的贡献为: s u m [ i ] × ( l e n [ i ] − l e n [ f a [ i ] ] ) × s i z [ i ] sum[i]\times(len[i]-len[fa[i]])\times siz[i] s u m [ i ] × ( l e n [ i ] − l e n [ f a [ i ] ] ) × s i z [

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

给你一囗甜甜゛ 提交于 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

LeetCode3

时光总嘲笑我的痴心妄想 提交于 2020-02-06 01:10:07
如果饿了就吃,困了就睡,渴了就喝,人生就太无趣了 问题描述: 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是?"wke",所以其长度为 3。 解题思路 1.如图1:初始状态,入参字符串指针 s 。字符串指针 p 和 flag 。计数器 sum 。变量 maxlong 记录最长的长度,没在图中显示。 2.指针 s 每次循环自增,计数器 sum=1 。在指针 s 的每次循环中,指针 flag 记录指针 p 的起始位置, p 通过循环每次自增+1,比较与 s 位置的值是否相同,不相同计数器+1。 p 每次移动到与 s 相差1个距离就结束。将 sum 与 maxLong 相比较,若是比 maxLong 大,将值赋给 maxLong 。在将 p 移动到 flag 的位置,准备下一次 s 的循环。 3.若是在 p 移动的过程中, p 所在位置值与 s 所在位置的值相同,就将 flag 移动到 p 后边的一个位置。并将 sum 置1。 s 本次循环结束后,将 p

[国家集训队] Crash的数字表格 - 莫比乌斯反演,整除分块

 ̄綄美尐妖づ 提交于 2020-02-05 15:55:42
考虑到 \(lcm(i,j)=\frac{ij}{gcd(i,j)}\) \(\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}\) \(\sum_{d=1}^{n}\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]\frac{ij}{d}\) \(\sum_{d=1}^{n}\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[gcd(i,j)==1]{ijd}\) \(=\sum_{d=1}^{n}d\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[gcd(i,j)==1]{ij}\) 看后面 \(\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[gcd(i,j)==1]{ij}\) \(=\sum_{i=1}^{x}\sum_{j=1}^{y}[gcd(i,j)==1]{ij}\) 考虑反演 \(f(d)=\sum_{i=1}^{x}\sum_{j=1}^{y}[gcd(i,j)==d]{ij}\) \(G(d)=\sum_{i=1}^{x}\sum_{j=1}^{y}[d|gcd(i,j)]{ij}\) \(G(d)=d^2\sum_{i=1}^{x/d}\sum_{j=1}^{y/d}[1|gcd(i,j)]{ij}\) \(G(d)=d^2\sum_{i=1}^{x

Integration via trapezoidal sums in MATLAB

浪尽此生 提交于 2020-02-05 08:23:49
问题 I need help finding an integral of a function using trapezoidal sums. The program should take successive trapezoidal sums with n = 1, 2, 3, ... subintervals until there are two neighouring values of n that differ by less than a given tolerance. I want at least one FOR loop within a WHILE loop and I don't want to use the trapz function. The program takes four inputs: f : A function handle for a function of x . a : A real number. b : A real number larger than a . tolerance : A real number that

Scala学习笔记05:函数

别等时光非礼了梦想. 提交于 2020-02-05 07:49:28
文章目录 一、声明函数 1、显式声明函数 (1)声明格式 (2)注意事项 (3)案例演示 2、隐式声明函数 (1)声明格式 (2)注意事项 (3)案例演示 二、Scala函数种类 1、成员方法 (1)基本概念 (2)案例演示 2、本地函数 (1)基本概念 (2)案例演示 3、匿名函数 (1)基本概念 (2)案例演示 4、高阶函数 (1)基本概念 (2)案例演示 三、神奇的占位符 1、基本概念 2、案例演示 (1)过滤集合 (2)处理集合 (3)参数占位符 四、闭包 1、基本概念 2、案例演示 五、可变参数 1、基本概念 2、案例演示 六、尾递归 1、基本概念 2、案例演示 一、声明函数 函数其实是一段具有特定功能的代码的集合,由函数修饰符、函数名、函数参数列表、函数返回值声明与函数体组成。 1、显式声明函数 (1)声明格式 [public | private | protected] def 函数名(参数列表) : 返回值声明 = {函数体} (2)注意事项 函数通过 def 关键字定义 def 前面可以具有修饰符,可以通过 private 、 protected 来控制其访问权限。注意默认访问权限是 public 还可使用 override 、 final 等关键字修饰 函数体中 return 关键字往往可以省略掉,一旦省略掉,函数将会返回整个函数体中最后一行表达式的值

threads in Java and computation

懵懂的女人 提交于 2020-02-05 07:20:52
问题 I am new to java, and I am trying to write a program that takes two parameters: the number until which we have to sum prime numbers the number of threads in which we have to do this So I use a method named Eratosthene that stores an array of boolean and if a number is prime, we mark it true and after that we mark all the multiples of this number false. I try to devide my array into sub arrays for each thread and do the operation in each sub arrays, and at the end sum all the results of sub

BZOJ 4555: [Tjoi2016&Heoi2016]求和

无人久伴 提交于 2020-02-04 23:22:55
好久之前做的题了,算是我的 NTT 入门题了,然后我点开题单里的多项式,除了这题全TM是权限题 当场去世 废话不多说直接推式子: \[ ans=\sum_{i=0}^n\sum_{j=0}^i \left\{_j^i\right\}\times 2^j\times j!\\=\sum_{i=0}^n\sum_{j=0}^n \left\{_j^i\right\}\times 2^j\times j!\\=\sum_{j=0}^n 2^j\times j!\times \sum_{i=0}^n\left\{_j^i\right\}\\=\sum_{j=0}^n 2^j\times j!\times \sum_{i=0}^n\sum_{k=0}^j (-1)^k\times \frac{1}{k!(j-k)!}\times (j-k)^i\\=\sum_{j=0}^n 2^j\times j!\times \sum_{k=0}^j (-1)^k\times \frac{1}{k!(j-k)!}\times \sum_{i=0}^n(j-k)^i\\=\sum_{j=0}^n 2^j\times j!\times \sum_{k=0}^j \frac{(-1)^k}{k!}\times \frac{\sum_{i=0}^n(j-k)^i}{j-k}\\ \] 注意上面的 \(\left\

非线性规划,图与网络

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-04 23:16:11
非线性规划,图与网络 非线性规划 图形化界面解法 图与网络流 非线性规划   下面只针对MATLAB解法做出介绍。在MATLAB中非线性规划的标准型为 m i n f ( x ) min \quad f(x) m i n f ( x ) s . t A x ≤ B s.t\quad Ax\leq B s . t A x ≤ B A e q x ≤ B e q A_{eq}x \leq B_{eq} A e q ​ x ≤ B e q ​ C ⋅ x ≤ 0 C \cdot x \leq0 C ⋅ x ≤ 0 C e q ⋅ x ≤ 0 C_{eq}\cdot x\leq 0 C e q ​ ⋅ x ≤ 0 非线性约束要单独成立一个函数文件。例如: function [c ceq]=nonlcon(x) %body end *fmincon( ) 函数所求最小值均为参数 x 0 x_0 x 0 ​ 附近的局部最小值。对于无约束优化可使用 fminunc( ) 可求得 x 0 x_0 x 0 ​ 附近的局部无约束最小值。对于带约束的优化过程中可返回函数的梯度来提高准确的程度。对于目标函数为二次型的规划,可以使用 quadprog( )*进行二次规划。 图形化界面解法 直接调用优化工具箱中的 optimtool 命令进行图形化操作,但是在未来的版本中优化工具箱可能被移除。 图与网络流

hdu2009

微笑、不失礼 提交于 2020-02-04 22:18:34
Problem Description 数列的定义如下: 数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。 Input 输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。 Output 对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。 Sample Input81 4 2 2 Sample Output94.73 3.41 一开始想用pow,但是发现好像会约掉最后两位 上码 # include <stdio.h> # include <math.h> int main ( void ) { int n , m ; double p , sum ; while ( scanf ( "%d %d" , & n , & m ) != - 1 ) { sum = n ; p = n ; for ( int i = 2 ; i <= m ; i ++ ) { p = sqrt ( p ) ; sum + = p ; } printf ( "%.2f\n" , sum ) ; } return 0 ; } 记录,共勉。 来源: CSDN 作者: schKatze 链接: https://blog.csdn.net/schKatze/article/details/104174746