bzoj 3043 (差分序列运用)】的更多相关文章

维护差分序列 显然要使差分序列的后n-1位为0 对于原来的区间操作 只需要单点修改或者两个点修改 就转化成了 对于差分序列但以一个数+ 或 - 或者一个+1同时一个- ans1=max(sum1,sum2)sum1=Σbi(bi>)sum2=absΣ(bi<) 求方案数的话嘛 也就是不同的b1 只有+ 或 -1的操作才可能影响到b1 这里并不是只有-1才会影响到b1 操作前半段+1和操作后半段-1是等效的 也就是说 前半段+ 会导致单点- 后半段-1也会导致单点- 是一样滴 现在搞出所有的单点…
3043: IncDec Sequence Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 248  Solved: 139[Submit][Status] Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种. Input 第一行一个正整数n 接下来n行,每行一个…
3043: IncDec Sequence Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 589  Solved: 332 Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种. Input 第一行一个正整数n 接下来n行,每行一个整数,第i+1行的整数表示ai.…
3043: IncDec Sequence Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 578  Solved: 325[Submit][Status][Discuss] Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种. Input 第一行一个正整数n 接…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3043 题意: 给定一个长度为n的数列a[i],每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一. 求:(1)至少需要多少次操作才能使数列中的所有数都一样. (2)在保证最少次数的前提下,最终得到的数列有多少种. 题解: 对于差分来说,给[l,r]+1(或-1)就是给差分数组s[l]+1和s[r+1]-1. 所以数列a[i],是从一个所有元素都相等的初始数组,经过若干次差分…
题目描述 给定一个长度为n的数列$a_1,a_2,--,a_n$​,每次可以选择一个区间[l,r],使这个区间内的数都加1或者都减1. 请问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种. 输入输出格式 输入格式: 第一行一个正整数n接下来n行,每行一个整数,第i+1行的整数表示a[i]​. 输出格式: 第一行输出最少操作次数第二行输出最终能得到多少种结果 输入输出样例 输入样例: 4 1 1 2 2 输出样例: 1 2 说明 对于100%的数…
Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一.问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种. Input 第一行一个正整数n 接下来n行,每行一个整数,第i+1行的整数表示ai.. Output 第一行输出最少操作次数第二行输出最终能得到多少种结果 Sample Input 41122 Sample Output 12 HINT 对于100%的数据,…
Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) #define ll long long #define maxn 100034 using namespace std; ll a[maxn]; int main() { // setIO("input"); int n; scanf("%d",&n); fo…
http://www.lydsy.com/JudgeOnline/problem.php?id=1635 差分序列是个好东西啊....很多地方都用了啊,,, 线性的进行区间操作orz 有题可知 h[a+1]~a[b-1]都是比h[a]和h[b]小,那么最佳方案就是将次区间的所有高度-1,那么我们就将整个区间-1 也就是sum[a+1]--, sum[b]++ 而条件h[a]>=h[b]我还不明觉厉啊..... (脑补:假设一般情况下h[a]==h[b]的,而却有c使得(a, c), pos[c]…
BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B_r\)-=\((r-l)*d+a_0\),\(B_{l...r-1}\)+=\(d\). 对于查询,似乎只需要求区间\(b_i\)的连续段个数? 并不是,比如: \(A:\ 0\ 1\ 3\ 6\ 10\\B:\ \ \ 1\ 2\ 3\ 4\) 答案是\(3\)而不是\(4\),我们可以这样划分…