Acwing-100-IncDec序列(差分)】的更多相关文章

IncDec序列 题目描述: 给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间[l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种. 输入格式: 第一行输入正整数n. 接下来n行,每行输入一个整数,第i+1行的整数代表ai. 输出格式: 第一行输出最少操作次数. 第二行输出最终能得到多少种结果. 数据范围: 0<n≤10^5, 0≤ai<21474836480≤ai&…
IncDec序列 Description 给定一个长度为 n 的数列 a1,a2,-,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种. Input 输入格式 第一行输入正整数n. 接下来n行,每行输入一个整数,第i+1行的整数代表ai. Output 输出格式 第一行输出最少操作次数. 第二行输出最终能得到多少种结果. Hint 数据范围 0<n≤10^5,…
给定一个长度为n的数列每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种. #include<bits/stdc++.h> #define ll long long using namespace std; const int N=1e5+5; ll a[N],c,x,y; int main() { int n;cin>>n>>a[1]; f…
题目描述 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种. 输入 第一行一个正整数n 接下来n行,每行一个整数,第i+1行的整数表示ai. 输出 第一行输出最少操作次数第二行输出最终能得到多少种结果 样例输入 4 1 1 2 2 样例输出 1 2 题解 差分 把原序列差分,考虑所有的$a_i-a_{i-1}(1\le i\le n…
(题面来自AcWing) 给定一个长度为 n 的数列 a1,a2,-,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种. 输入格式 第一行输入正整数n. 接下来n行,每行输入一个整数,第i+1行的整数代表ai. 输出格式 第一行输出最少操作次数. 第二行输出最终能得到多少种结果. 数据范围 0<n≤105,0≤ai<2147483648(因为不开long l…
原题 题目描述给定一个长度为 n 的数列 a1,a2,…,ana1,a2,…,an,每次可以选择一个区间 [l,r][l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种. 输入格式第一行输入正整数n. 接下来n行,每行输入一个整数,第i+1行的整数代表ai. 输出格式第一行输出最少操作次数. 第二行输出最终能得到多少种结果. 数据范围0<n≤1050<n≤1050≤ai<214748…
IncDec Sequence 题目大意:给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种. 数据范围:对于100%的数据,n=100000,0<=ai<2147483648 题解: 首先,对于这种操作是区间加啊区间减啊的题,不难想到差分. 现在假设,$b_i = a_i - a_{i - 1}$,$b$序列有$n$个值. 我们要…
执行用时2ms,击败100%用户 内存消耗52.1MB,击败91%用户 这也是我第一次用差分数组,之前从来没有碰到过,利用差分数组就是利用了差分数组在某一区间内同时加减情况,只会改变最左边和最右边+1的位置上的值.区间最左边同步加减,区间最右边同步加减其相反数. 例如有一原始数组为[2,5,4,7,10,1] 获得的差分数组为[2,3,-1,3,3,-9] 第一步:0-3区间的同步加6 则此时原始数组为[2+6,5+6,4+6,7+6,10,1] 获得的差分数组为[2+6,3,-1,3,3-6,…
突然就提到了这个东西,为了不再出现和去年联赛看见二分没学二分痛拿二等第一的情况,就去学了一下,基础还是比较简单的-- 先看一个经典例题: 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种. 对于100%的数据,n=100000,0<=ai<2147483648. 注意longlong 注意longlong 注意longlong 注…
给定m个序列,每个包含n个非负整数. 现在我们可以从每个序列中选择一个数字以形成具有m个整数的序列. 很明显,我们一共可以得到nmnm个这种序列, 然后我们可以计算每个序列中的数字之和,并得到nmnm个值. 现在请你求出这些序列和之中最小的n个值. 输入格式 第一行输入一个整数T,代表输入中包含测试用例的数量. 接下来输入T组测试用例. 对于每组测试用例,第一行输入两个整数m和n. 接下在m行输入m个整数序列,数列中的整数均不超过10000. 输出格式 对于每组测试用例,均以递增顺序输出最小的n…