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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[hihoCoder 1384]Genius ACM

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [hihoCoder 1384]Genius ACM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

題庫鏈接

給定一個整數 \(M\),對于任意一個整數集合 \(S\),定義“校驗值”如下:

從集合 \(S\) 中取出 \(M\) 對數(即 \(2\times M\) 個數,不能重復使用集合中的數,如果 \(S\) 中的整數不夠 \(M\) 對,則取到不能取為止),使得“每對數的差的平方”之和最大,這個最大值就稱為集合 \(S\) 的“校驗值”。

現在給定一個長度為 \(N\) 的數列 \(A\) 以及一個整數 \(k\)。我們要把 \(A\) 分成若干段,使得每一段的“校驗值”都不超過 \(k\)。求最少需要分成幾段。 多測,測試組數為 \(T\)。

\(T\leq 12,1\leq n,m\leq 5\times 10^5,0\leq k\leq 10^{18},0\leq P_i\leq 2^{20}\)

Solution

先考慮如何求“校驗值”。思路是當題述結果最大時,應該要求最大值和最小值一組;次大值和次小值一組……

我們以 \(4\) 個數為例,如 \(a,b,c,d\),其中 \(a\leq b\leq c\leq d\) 。那么 \((d-a)^2+(c-b)^2=a^2+b^2+c^2+d^2-2ad-2bc\)\((b-a)^2+(d-c)^2=a^2+b^2+c^2+d^2-2ab-2cd\)。容易發現 \(ad+bc<ab+cd\),故前者更優。更多數時用數學歸納法可以證明。

其次,另外一個要點是當一個區間左端點固定時右端點要盡可能往右取。

注意到這兩點,我們左端點從 \(1\) 開始,向右找到最遠的符合條件的右端點,劃分為一段。再接著固定左端點,繼續尋找。這樣即可統計出答案。假設我們右端點是枚舉得到的,記答案(最少段數)為 \(ans\),那么本算法的復雜度約為 \(O\left(ans\times\left(\frac{n}{ans}\right)^2\log\frac{n}{ans}\right)=O\left(n^2\times\frac{\log\frac{n}{ans}}{ans}\right)\)。

若答案趨為 \(1\),復雜度趨為 \(O\left(n^2\log n\right)\)。顯然枚舉右端點的思路是過不了此題的。而計算“校驗值”的復雜度是無法再優化的,考慮如何快速尋找右端點。

一個思路是二分右端點,其余同上,由主定理可以證明復雜度是 \(O(n\log^2 n)\) 的。不過可惜的是出題人把這個算法卡掉了。

既然二分不行,我們考慮用倍增的思路來求右端點,具體思路是首先設倍增 \(len\) 長度為 1,若右端點為 \(r\),判斷若端點 \(r+len\) 符合條件。則將右端點賦值為 \(r+len\) 并且將 \(len\) 倍增,繼續討論;若不符合條件則將 \(len\) 縮短一半,繼續討論。其實該算法的復雜度與二分是一致的,不過只能寫倍增才能過此題。

另外,不論二分還是倍增,排序直接 \(\text{sort}\) 依舊過不了。注意到這樣一個小技巧,如果上一個枚舉的右端點為 \(r\),這一次右端點為 \(r'\),那么可以知道區間 \((l,r)\) 是有序的,那么我們只需排序 \((r,r')\) 的區間,之后將兩個部分歸并即可使整個 \((l,r')\) 有序。

Code

#include <bits/stdc++.h> #define ll long long using namespace std; const int N = 5e5+5; void gi(int &x) {x = 0; char ch = getchar();while (ch < '0' || ch > '9') ch = getchar();while (ch >= '0' && ch <= '9') x = x*10+ch-'0', ch = getchar(); }int t, n, m, p[N], a[N], kl, kr, tmp[N]; ll k;void merge(int l, int r, int x, int y) {int i = l, j = x, k = l;while (i <= r && j <= y)if (a[i] < a[j]) tmp[k++] = a[i++];else tmp[k++] = a[j++];while (i <= r) tmp[k++] = a[i++];while (j <= y) tmp[k++] = a[j++];for (int i = l; i <= y; i++) a[i] = tmp[i]; } bool judge(int l, int r) {if (kl == l && r > kr) {for (int i = kr+1; i <= r; i++) a[i] = p[i];sort(a+kr+1, a+r+1);merge(l, kr, kr+1, r); kr = r;} else {for (int i = l; i <= r; i++) a[i] = p[i];sort(a+l, a+r+1);kl = l, kr = r;}int t = 0; ll cnt = 0;while (t < m && l < r) {cnt += 1ll*(a[r]-a[l])*(a[r]-a[l]);++l, ++t, --r;if (cnt > k) return false;}return cnt <= k; } void work() {scanf("%d%d%lld", &n, &m, &k);for (int i = 1; i <= n; i++) gi(p[i]);int l = 1, r = 1, ans = 0, len, k;while (l <= n) {len = 1, k = l;while (len) {if (r+len <= n && judge(l, r+len)) {r += len;k = r, len <<= 1;}else len >>= 1;}l = r = k+1, ++ans;}printf("%d\n", ans); } int main() {scanf("%d", &t);while (t--) work();return 0; }

轉載于:https://www.cnblogs.com/NaVi-Awson/p/11167203.html

總結

以上是生活随笔為你收集整理的[hihoCoder 1384]Genius ACM的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久久先锋| 中文字幕第88页 | 欧美一区二区三区黄色 | 久久在草| 欧美aaaaaaaaaa | 久久久精品日韩 | 在线观看的av网址 | 中国久久久久 | 国产精品一线二线 | 亚洲嫩草影院 | 日韩成人三级 | 午夜精品久久久久久久99热浪潮 | 美女露胸露尿口 | 久久久久亚洲无码 | 久热伊人 | 国产一级二级三级 | 欧美aa一级 | 老司机精品导航 | 欧美精品日韩少妇 | 91精品在线观看视频 | 久久久久精彩视频 | 国产精品日韩专区 | 少妇一级免费 | 性久久久久久久久久久久 | 国产黄a三级三级看三级 | 亚洲成a| 欧美三级特黄 | 日韩av手机在线 | 一区二区视频在线播放 | 欧亚免费视频 | 毛片网站免费在线观看 | 欧美精品aaa | 亚洲中文一区二区三区 | 香蕉精品视频在线观看 | 九九在线 | 色一情一乱一伦一区二区三区 | 国产精品欧美综合 | 欧美三级电影在线观看 | 日本黄动漫 | 成年人在线播放 | 91嫩草影视 | 国产福利网 | 玩偶姐姐在线观看免费 | 青草热视频 | 精品国产一区二区三区四 | 国产农村妇女精品一区二区 | 日韩有码在线播放 | 成人三级影院 | 嫩草研究院在线观看 | 日韩欧美综合一区 | 2019亚洲男人天堂 | 精品日韩视频 | 色女孩综合 | 日本精品一区二区三区视频 | 一道本一区二区 | 亚洲狠狠爱 | 超碰av人人| 高潮一区二区三区乱码 | 奇米影视四色在线 | 国产亚洲精品一区二区三区 | 会喷水的亲姐姐 | 可以免费看毛片的网站 | 天天爽夜夜爽视频 | 午夜免费视频网站 | 狠狠插狠狠操 | 欧洲中文字幕 | 情侣作爱视频网站 | 午夜爱爱影院 | 亚洲精品视频中文字幕 | 欧美色图视频在线 | 一区二区三区视频免费在线观看 | 色婷婷一区二区三区 | 看片免费黄在线观看入口 | 国产高清第一页 | 成人精品视频在线观看 | 欧美一区二区三区在线看 | 色就是色av | 天天草天天干 | 免费人成网站 | 亚洲欧洲在线视频 | 欧美日韩在线免费 | 尹人久久 | 精品少妇一区二区三区在线观看 | 亚洲另类网站 | 极品色av | 91麻豆精品在线观看 | 国产黄色免费在线观看 | 成人在线短视频 | www.jizz国产| 午夜av在线播放 | 五月激情开心网 | 色婷婷色综合 | 99久久精品免费看国产免费软件 | 免费一级片在线观看 | 嫩草私人影院 | 亚洲精品视频在线观看视频 | 美女扒开让男人桶爽 | 大色综合| 麻豆视屏 |