2022春每日一題 Day 22

2022-09-26 05:48:11 字數 672 閱讀 5194

光看題幾乎沒有思路,但是顯然到最後每個人手中一定有 d=s/n個糖果(s為所有人糖果總和),不妨設2號給1號x2個糖果,3號給2號x3個.....1號給n號x1個,那麼顯然a1-x1+x2=d,a2-x2+x3=d

這不就是個n元n次方程組,但是不是,最後乙個方程組可以由前面的方程組推出來,因此我們試著用x1表示其他的x,x2=d+x1-a1=x1-c1 (c1=a1-d),x3=d+x2-a2=d+d+x1-a1-a2=x1+d-c1-a2=x1-c2(c2=c1+a2-d)....

我們希望abs(x1)+abs(x2)....+abs(xn)最小,也就是abs(x1)+abs(x1-c1)+abs(x1-c2)....最小,怎麼辦呢,不難聯想絕對值幾何意義,先把零點(c)排序,然後中間(奇)的或中間部分(偶)一定是使得上述式子最小的點。

**:

#include #include #include #include #define int long long

const int n=1e6+5;

using namespace std;

int n,a[n],c[n],m,s;

signed main()

2022春每日一題 Day 9

思維題,差分好題,每次區間操作,對應差分a l v,a r 1 v,在差分陣列中一定有乙個正負號抵消,那麼我們求出差分陣列中正數 負數 和,記做s1,s2。顯然,當s1,s2為0時,剩下的沒有歸0的元素只能與a 1 或a n 配,答案就是abs s1 s2 min s1,s2 也就是max s1,s...

2022春每日一題 Day 10

每次操作 c i 變成c i 1 c i 1 c i 那麼顯然,c 1 和c n 是不會改變的,因此只要c 1 和t 1 c n 和t n 不相等,一定是輸出no。接著分析,不妨設x c i 1 y c i z c i 1 那麼x,y,z的差分為x,y x,z y,進行操作後數列變為x,x z y,...

2022春每日一題 Day 25

讀完題,顯然可以的到下同餘方程 x mk y nk mod l 移項變成 m n k al y x 只有k,l是未知的,而這題要求非負整數k的最小值,顯然拓展歐幾里得演算法。然後這題就做完了。include include include include define int long long u...