AcWing100 增減序列 差分

2022-07-14 09:24:07 字數 628 閱讀 9870

求出\(a[i]\)的差分數列\(b[i]\),題目的目的是使\(b_2,\ldots,b_n\)都變為\(0\),

令 \(p,q\) 分別為\(\\)中正數和負數之和的絕對值,

優先在\(b_2,\ldots,b_n\)中選一對正負數操作肯定是最優的,

之後再分別與\(b_1或b_n\)配對操作

#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn = 100010;

int n;

int a[maxn], b[maxn];

ll pos,neg;

ll read() while(ch>='0' && ch<='9') return s*f; }

int main()

for(int i=2;i<=n;++i)

neg = -1ll * neg;

printf("%lld\n%lld\n",max(pos,neg),abs(neg - pos) + 1);

return 0;

}

AcWing100 增減序列 差分 貪心

原題鏈結 題目要求通過對區間 l,r 的操作 1或者 1 使數列中數都一樣.我們發現滿足上述要求的數列的差分陣列的a 2 n 一定是 0,0,0,a 1 是val 據此,我們可以將問題轉化成經過最少次對區間 l,r 的操作使差分陣列a變為 val,0,0,0,下面是貪心的部分 大佬的部落格講解 in...

AcWing 100 增減序列

給定乙個長度為 nn 的數列 a1,a2,ana1,a2,an,每次可以選擇乙個區間 l,r 使下標在這個區間內的數都加一或者都減一。求至少需要多少次操作才能使數列中的所有數都一樣,並求出在保證最少次數的前提下,最終得到的數列可能有多少種。輸入格式 第一行輸入正整數nn。接下來nn行,每行輸入乙個整...

ACwing 100 InDec序列 差分

題面來自acwing 給定乙個長度為 n n 的數列 a1,a2,an a1,a2,an 每次可以選擇乙個區間 l,r 使下標在這個區間內的數都加一或者都減一。求至少需要多少次操作才能使數列中的所有數都一樣,並求出在保證最少次數的前提下,最終得到的數列可能有多少種。輸入格式 第一行輸入正整數n n ...