日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Arithmetic Sequence 三分,货仓选址,nth_element,__int128(济南)

發布時間:2025/3/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Arithmetic Sequence 三分,货仓选址,nth_element,__int128(济南) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


題意 :

  • 給一序列,每次操作選擇一個數加一或者減一,需要將這個序列變成等差數列,問最小操作數

思路 :

  • 數據范圍很大又沒有頭緒,想到二分或者三分。對于不同的公差d,肯定是只有一個最優,兩邊的都比這個公差大,這就是個單谷函數(代價隨公差的變化是一個單谷函數),我們可以用三分來求這個公差。
  • 但有了公差還無法確定首項,再套一個三分會TLE
  • 設首項為x,公差為d,那么變化第一項的次數為∣x?a[1]∣|x-a[1]|x?a[1],第二項為∣x+d?a[2]∣|x+d-a[2]|x+d?a[2],|x+d*2-a[3]|,…,設t[i]=a[i]?d?(i?1)t[i]=a[i] - d*(i-1)t[i]=a[i]?d?(i?1),每一項的變化就會轉化為∣x?t[i]∣|x-t[i]|x?t[i](每一項的這個距離都共享同一個端點x,注意為什么是把它轉換成了絕對值里面的減法而不是轉換成絕對值里的加法,畢竟距離肯定有更好的性質),就轉化成了貨倉選址問題,因此,找到中位點即可
  • 需要用nth_element找中位點,sort復雜度會超(由于三分的時間復雜度要高于二分,因此求中位數禁止使用sort,請使用快速選擇算法或者部分快速排序,下面的代碼使用了北京大學提供的題解上使用的nth_element函數求解)
  • 可能會超long long,需要開128(由于數據范圍過大(1e13*2e5),在運算過程中可能會爆long long,請使用128位整數__int128)
#include <iostream> #include <algorithm>using namespace std;typedef long long ll;const int N = 2e6 + 10;int n; ll a[N], b[N];void print(__int128 x) {if (x < 0){putchar('-');x = -x;}if (x / 10)print(x / 10);putchar(x % 10 + '0'); }__int128 solve(ll d) {__int128 ans = 0;for (int i = 1; i <= n; i ++ )b[i] = a[i] - d * (i - 1);nth_element(b + 1, b + (n + 1) / 2, b + n + 1); // [1, n]中的第 (n + 1) / 2 個,下標從1開始__int128 a0 = b[(n + 1) / 2]; // 與nth_element一起使用,排序后的第這個要找的數,// 上面已經找到中位數,也就是首項a0了for (int i = 1; i <= n; i ++ ){__int128 tmp = a0 + (i - 1) * d - a[i];tmp >= 0 ? ans += tmp : ans -= tmp;}return ans; }int main() { // ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);scanf("%d", &n);for (int i = 1; i <= n; i ++ ) scanf("%lld", &a[i]);ll l = -2e13 - 5, r = 2e13 + 5;while (l < r){ll m1 = l + (r - l) / 3;ll m2 = r - (r - l) / 3;__int128 t1 = solve(m1);__int128 t2 = solve(m2);if (t1 < t2)r = m2 - 1;elsel = m1 + 1;}print(solve(l));return 0; }

總結

以上是生活随笔為你收集整理的Arithmetic Sequence 三分,货仓选址,nth_element,__int128(济南)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久国产精品久久久 | 久久久久久久九九九九 | 国产调教视频 | 红桃视频一区二区三区免费 | 免费爱爱视频 | 大陆极品少妇内射aaaaaa | 欧美综合图区 | 欧美成人精品二区三区99精品 | 久久久99久久 | 久久久久99 | 黑人性视频 | 五月天婷婷在线视频 | 欧美日韩首页 | 亚洲欧美亚洲 | 成人免费做受小说 | 午夜精品一区二区三区在线观看 | 男女日屁视频 | 国内视频一区二区 | 一道本久在线中文字幕 | 中文字幕三区 | 成人久久久精品乱码一区二区三区 | 四虎影视黄色 | 亚洲精品国产精 | 中文字幕av亚洲精品一部二部 | av日韩精品 | 欧美性猛交一区二区三区精品 | 精品国产一二三 | 美女视频国产 | 91av视频在线免费观看 | 香蕉网站在线观看 | 欧洲亚洲自拍 | 制服诱惑一区 | 日本少妇一区二区三区 | 99精品视频免费观看 | 久久牛牛 | 亚洲三区在线观看无套内射 | 天天干天天看 | 姑娘第5集高清在线观看 | 日韩天堂在线观看 | 色综合网站 | 欧美日本中文字幕 | 狠狠干中文字幕 | 三级av网址 | 男女视频免费网站 | 丰满少妇一区二区三区专区 | 亚洲国产天堂av | 哈利波特3在线观看免费版英文版 | 日本毛片视频 | 亚洲乱熟| 艳妇乳肉豪妇荡乳av无码福利 | 91激情| 亚洲成人自拍视频 | 久久精品国产av一区二区三区 | 免费视频a| 久草观看视频 | 少妇姐姐| 精品国产区一区二 | 亚洲精品激情视频 | 麻豆国产尤物av尤物在线观看 | 成人观看网站 | 日韩中出 | 一区二区三区免费在线 | 毛片综合 | 波多野结衣一区二区三区在线观看 | 久操伊人网 | 他趴在我两腿中间添得好爽在线看 | 欧洲做受高潮免费看 | 欢乐谷在线观看免费播放高清 | 久久久999国产精品 天堂av中文在线 | 国产18页 | 久久嫩草视频 | 99re热在线视频 | 国产一区二区视频在线观看 | 中文字幕25页 | 日韩视频在线一区 | 美女午夜影院 | 99有精品 | 黄色在线视频观看 | 激情内射人妻1区2区3区 | 中文字幕婷婷 | 蜜臀国产AV天堂久久无码蜜臀 | 女同亚洲精品一区二区三 | 国产免费视频一区二区三区 | 午夜电影一区二区三区 | 日韩欧美一区二区三区视频 | 国产精品九 | 在线观看视频一区 | 性猛交ⅹxxx富婆video | 久久久久区 | 日本中文在线视频 | 色片网站在线观看 | 狠狠干在线观看 | 五月综合在线 | 中文字幕 成人 | 性喷潮久久久久久久久 | 欧美精品一区二区三区久久久 | 国产h视频在线观看 | 亚洲伦理自拍 | 鲁鲁在线 |