sum

【算法笔记】Codeup 100000566C

回眸只為那壹抹淺笑 提交于 2020-03-02 13:11:32
本专栏仅仅用于个人记录刷题过程,如有更好的解决方法,可以留言哦 题目要求 设置3个变量a, b, sum,其中a, b用来存放两个整数,sum用来存放a, b两个数的和,通过赋值(即采用赋值运算符"=")的方式将a初始化为123,b初始化为456,并把两个变量相加的结果赋值给sum。 要求输入 无,变量在程序中以赋值的方式给定初值 要求输出 sum=结果 样例 sum = 579 可AC代码如下 # include <stdio.h> int main ( ) { int a = 123 , b = 456 ; int sum = a + b ; printf ( "sum=%d" , sum ) ; return 0 ; } 来源: CSDN 作者: 蚂蚁的信息素 链接: https://blog.csdn.net/FM_xu156156/article/details/104608915

树状数组

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-02 10:17:05
树状数组可以看作线段树的变形,不同于线段树可以计算区间和,区间最大/最小值,树状数组一般只能完成以下操作: 给定一个初始值全为0的数列 a 1 . . . a n a_1...a_n a 1 ​ . . . a n ​ 给定 i i i ,计算 a 1 + a 2 + . . . + a i a_1+a_2+...+a_i a 1 ​ + a 2 ​ + . . . + a i ​ ,即前缀和 给定 i i i 和 x x x ,执行 a i + = x a_i+=x a i ​ + = x 。 基于线段树的实现 如果使用线段树执行上述功能,只需要对介绍过的 RMQ 进行少量的修改,就可以实现,线段树每个节点维护区间的和。 接下来,我们重点关注给定区间始末 s , t s,t s , t ,如何求得 a s + a s + 1 + . . . + a t a_s+a_{s+1}+...+a_t a s ​ + a s + 1 ​ + . . . + a t ​ ,对于线段树,我们直接进行区间的迭代查询即可。但是有时这个效率依然是不够的 此时,如果我们维护前缀和 s u m [ i ] = a 0 + . . . + a i sum[i]=a_0+...+a_i s u m [ i ] = a 0 ​ + . . . + a i ​ ,那么只需要计算 s u m [ t ] − s

作业

人走茶凉 提交于 2020-03-02 01:06:46
LeeCode 53题 求最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 例:输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 class Solution { public : int maxSubArray ( vector < int > & nums ) { if ( nums . size ( ) == 0 ) return - 1 ; int sum = nums [ 0 ] ; int maxsum = nums [ 0 ] ; for ( int i = 1 ; i < nums . size ( ) ; ++ i ) { if ( sum > 0 ) sum = sum + nums [ i ] ; else sum = nums [ i ] ; if ( maxsum < sum ) maxsum = sum ; } return maxsum ; } } ; LeeCode 88题 有序数组和 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设

洛谷P2577 [ZJOI2005]午餐

﹥>﹥吖頭↗ 提交于 2020-03-02 00:57:13
这个题比较好。。。。 好像被我20分钟秒了???然而颓了一会炉石后。。。9点18分才打出来。。。。 单独考虑一个窗口,发现答案为: M A X ( s u m [ p − 1 ] + c o s t [ p ] ) ( s u m [ k ] 为 1 至 k 领 饭 时 间 之 和 ) MAX(sum[p-1]+cost[p])(sum[k]为1至k领饭时间之和) M A X ( s u m [ p − 1 ] + c o s t [ p ] ) ( s u m [ k ] 为 1 至 k 领 饭 时 间 之 和 ) 然后发现,要使得答案最大,不是 1.(当 cost最大时)就是 2.(sum[n]+一个cost时) 于是我们可以直接先对cost从大到小排序。。。就保证了1.最小 然后只用考虑怎么样 让2.最小。。。 此时可以考虑dp了。。。。 设: f ( i , j , k ) 前 i 个 人 , A 窗 口 的 等 待 时 间 为 j , B 窗 口 的 等 待 时 间 为 k f(i,j,k)前i个人,A窗口的等待时间为j,B窗口的等待时间为k f ( i , j , k ) 前 i 个 人 , A 窗 口 的 等 待 时 间 为 j , B 窗 口 的 等 待 时 间 为 k 但空间会炸,考虑压缩 f ( i , j ) 前 i 个 人 , A 窗 口 的 等 待 时 间

ICPC North Central NA Contest 2017 D+E+F

本小妞迷上赌 提交于 2020-03-02 00:56:13
D. Smooth Array 根据题意,显然是长度为k的循环节,所以按数组下标对k的余数进行分组 问题转换为:k组元素,每组选择一个要变换为的数值w,其价值为本组元素与w相 同的个数,且k组数值w的和为S. 最终使(N − 总价值)最小,即修改次数最 少。 分K组做一下背包。c[i]为该组i出现的次数。f[i]为体积为i时的最大价值。g[i]为上一组元素,到i这个体积的最大f[]值,在本组背包更新后,用g更新f,因为相当于本组一点贡献都没有,f[i]都一定能打到g[i]的价值。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=5e3+7; int a[maxn],f[maxn],c[maxn],g[maxn]; int main() { int n,k,s; scanf("%d%d%d",&n,&k,&s); for(int i=0;i<n;i++) scanf("%d",&a[i]); memset(f,-0x3f,sizeof(f)); f[0]=0; for(int i=0;i<k;i++){ vector<int>tmp; memset(c,0,sizeof(c)); memset(g,0,sizeof(g)); for(int j=i;j<n;j+=k){

[CQOI2015]选数

怎甘沉沦 提交于 2020-03-01 22:45:27
[CQOI2015]选数 从[L,H]中可重复地选出N个数,问其gcd等于K的方案 \(mod\ 10^9+7\) ,1<=N,K<=10^9,1<=L<=H<=10^9,H-L<=10^5。 解 法一:直接 转换为Mobius问题,不难有 \[ans=\sum_{i_1=L}^H\sum_{i_2=L}^H...\sum_{i_N=L}^H(gcd(i_1,i_2,...,i_N)==k)\] 于是设 \[f(k)=\sum_{i_1=L}^H\sum_{i_2=L}^H...\sum_{i_n=L}^H(gcd(i_1,i_2,...,i_n)==k)\] \[F(k)=\sum_{i_1=L}^H\sum_{i_2=L}^H...\sum_{i_N=L}^H(k|gcd(i_1,i_2,...,i_N))=([\frac{H}{k}]-[\frac{L-1}{k}])^N\] 由Mobius反演定理代入有 \[ans=\sum_{k|d}([\frac{H}{d}]-[\frac{L-1}{d}])^N\mu(d/k)=\] \[\sum_{d=1}^{[H/k]}([\frac{H}{dk}]-[\frac{L-1}{dk}])^N\mu(d)\] 显然左式可以整除分块,而至于后式只需要快速维护其前缀和,注意到N很大,于是用杜教筛优化即可。 参考代码: #include

如何招聘面试区块链以太坊开发人才

时光毁灭记忆、已成空白 提交于 2020-03-01 17:49:40
对优质区块链开发人员的需求很大,这是有充分理由的。区块链和ICO领域在过去几年中爆炸式增长。越来越多的人试图进入并在该领域中扬名立万。但是,为了获得成功,他们拥有一支强大而健全的团队至关重要。区块链开发人员,更准确地说,以太坊开发人员是该团队中最关键的组成部分。 因此, 在本指南中,我们将使你的生活更轻松。我们将向你展示如何精确定位和从人群中筛选的优秀的人才。 在我们雇用以太坊开发者之前,重要的是我们要知道我们雇用的是哪类人。 怎么样才算是一个完美NB的以太坊开发者? 在以太坊开发者精湛的技能中,最重要的是要知道将最优秀的与其他人区分开的基本品质是什么?优秀的开发人员必须不仅仅是具有区块链编码技能的开发人员。我们并不是说只熟悉编码就没有价值,但是,如果你需要一个合适的开发人员来创建一个帝国。那么,你正在寻找的一些主要品质是什么? 去中心化的坚定信念:这些人认为去中心化将挽救人类。传统公司不会雇佣这些人,因为他们相信社会,公司和政府等机构不应该去中心化。 掌握密码学:区块链开发人员需要掌握加密经济学。加密经济学,密码学和经济学分为两部分。这就是为什么伟大的以太坊开发人员应该对密码学有一种不懈的好奇心。 掌握经济学:加密经济学的后半部分是“经济学”,因此专业开发人员也应该具备经济和博弈论机制的良好知识。如果你正在创建区块链平台,则代码应确保所有参与者都受到经济激励。 极度好奇

BZOJ_2820_YY的GCD_莫比乌斯反演

我怕爱的太早我们不能终老 提交于 2020-03-01 14:56:31
BZOJ_2820_YY的GCD_莫比乌斯反演 题意&分析: $\sum\limits_pis[p]\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)=p]$ $=\sum\limits_pis[p]\sum\limits_{i=1}^{\lfloor \frac{n}{p}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{p}\rfloor}[gcd(i,j)=1]$ $=\sum\limits_pis[p]\sum\limits_{i=1}^{\lfloor \frac{n}{p}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{p}\rfloor}[gcd(i,j)=1]$ $=\sum\limits_pis[p]\sum\limits_{i=1}^{\lfloor \frac{n}{p}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{p}\rfloor}\sum\limits_{d|gcd(i,j)}\mu(d)$ $=\sum\limits_pis[p]\sum\limits_{d=1}^{\lfloor \frac{n}{p}\rfloor}\mu(d)\sum\limits_{i=1}^{\lfloor

[数论]莫比乌斯反演3

杀马特。学长 韩版系。学妹 提交于 2020-03-01 08:53:41
索引 莫比乌斯反演1 定理 莫比乌斯反演2 证明 莫比乌斯反演3 技巧 实用技巧 1、 \[[gcd(i,j)=1]=\sum_{d|gcd(i,j)}\mu(d)\] 证明 根据性质1,其实就是莫比乌斯函数的定义 莫比乌斯函数的性质1 \[\sum_{d|n}\mu(d)=[n=1]\] 那么我们将gcd(i,j)带入n即可得到 \[\sum_{d|gcd(i,j)}\mu(d)=[gcd(i,j)=1]\] 证毕。 2、 求下式 \[\sum_{j=1}^{n}\sum_{j=1}^{m}gcd(i,j),(n<m)\] 因为 \[\sum_{d|n}\varphi(d)=n\] 我们按照套路将上式的要求的式子的 \(n\) 替换为 \(gcd(i,j)\) 即原式变换为: \[\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|gcd(i,j)}\varphi(d)\] 按照套路将d分类得 \[\sum_{d=1}^{n}\varphi(d)\times\lfloor\frac{n}{d}\rfloor\times\lfloor\frac{m}{d}\rfloor\] 结束。 3、 这是套路3(见下)的简化版 将一般求和式转为枚举式 例如下式: \[\sum_{i=1}^{\lfloor\frac{a}{d}\rfloor}\sum_{j=1}^{

卷积 & 杜教筛

泪湿孤枕 提交于 2020-03-01 08:44:39
目录 卷积 杜教筛 前言:发现最近都没怎么写博客,,,赶紧发篇以前记的笔记 凑凑数 卷积 卷积定义:   如果有数论函数 \(f, g\) , 那么它们卷积的第 \(n\) 项为 \((f * g) (n)\) ,设这个卷出来的新函数为h,那么有    \[h(n) = \sum_{k | n} f(k) g(n / k) = \sum_{ij = n}f(i) g(j)\]    一些性质:   1,积性函数的卷积还是积性函数   证明: 现有 \(f, g\) 为积性函数,且 \(gcd(p, q) == 1\) ,求证 \(h(p) \cdot h(q) = h(qp).\)    \[h(p) \cdot h(q) = \sum_{ab = p}f(a) g(b) \cdot \sum_{cd = q}f(c) g(d)\]    \[= \sum_{a} f(a) g(\frac{p}{a}) \sum_{c} f(c) g(\frac{q}{c})\]    \[= \sum_{a} \sum_{c} f(a) f(c) g(\frac{p}{a}) g(\frac{q}{c})\]    \[= \sum_{a} \sum_{c} f(ac) g(\frac{pq}{ac})\]   因为 \(ac \cdot \frac{pq}{ac} = pq\) ,所以