思維題,把|i2-j2|+|ai2-aj2|絕對值符號去掉後,我們設i2-j2|+|ai2-aj2|=j2-i2+aj2-ai2=(j2+aj2)-(i2+ai2)
或者|i2-j2|+|ai2-aj2|=j2-i2+aj2-ai2=(ai2-i2)-(aj2-j2)
原式化簡後只有這兩種形式,那麼我們可以設定兩個陣列a[n],b[n],分別維護(i2+ai2)和(ai2-i2),再排個序,輸出max(a[i])-min(a[i])與max(b[i])-min(b[i])之間最大的那個就好了。
#include#include#includeusing namespace std;
typedef long long ll;
const int maxn=1e5+5;
ll a[maxn],b[maxn];
int main()
sort(a+1,a+1+n);
sort(b+1,b+1+n);
cout<總結:遇到絕對值符號,可以嘗試消去化簡,不然可能會很複雜。
牛客練習賽69 B
題意 給定n nn個數,乙個x xx表示可以劃分成最多x xx個串,乙個y yy表示在乙個串中最多選擇y yy個數。最後求 i 1x j 1yv al i j sum x sum yval i,j i 1x j 1 y va l i,j v al i,j val i,j val i,j 為 將n n...
《牛客練習賽28 B》
這題主要就是多了乙個平方和的操作。我們維護平方和的值的時候。需要注意在下放的時候,要先把乘法之後的sum1算出來,這對算sum1最終的值沒有影響。但是對sum2的值有影響。因為我們在計算中就在更新adtag的值,所以這個adtag它的sum1應該最終化。includeusing namespace ...
牛客練習賽4 A B
laptop 時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld fst是一名可憐的小朋友,他很強,但是經常fst,所以rating一直低迷。但是重點在於,他非常適合acm!並在最近的區域賽中獲得了不錯的成績。拿到獎...