AHOI2018初中組 二分查詢 分組

2022-05-24 14:09:14 字數 760 閱讀 3115

最開始是想二分答案的,但是沒有考慮到資料中重複的數值的情況,50 分 wa 了。。。

但是這題顯然適合二分查詢:

當我們的資料 在陣列中是線性排列的,就可以使用二分查詢。

需要兩個輔助陣列:

你甚至還會發現這題有點蜘蛛紙牌那味(霧)

不多說閒話,下面是**:

/*

二分查詢:設計乙個陣列 g 表示第 i 個分組中 需要加入的數值

sz 表示組大小

先排個序,然後就可滿足單調遞增即可二分查詢

有重複數值時盡量加在最後乙個位置

*/# include # include # include # define maxn 100000+5

using namespace std;

int a[maxn], n, ans = 100005, sz[maxn], g[maxn], cntg;

int main()

if(g[l] != a[i]) // 注意這裡一定是用 l ,不然如果沒有進行上一步操作更新 mid 值的話會導致恐怖的 bug

else

} // 對於每個 a[i] 尋找它的位置

for(int i = 1; i <= cntg; i++)

ans = min(ans, sz[i]);

printf("%d", ans);

return 0;

}

AHOI2018初中組 球球的排列

論dp的百種用法之一 因為dp必須有一種全面的狀態,但是這道題 似乎排列等等問題都不是dp擅長處理的地方。首先分析性質。我們發現,這種不能放在一起的關係具有傳遞性。因為如果 xy a 2,xz b 2 那麼 yz dfrac dfrac big dfrac big 2 具有傳遞性的話,我們就會發現,...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

1128 二分 二分查詢

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...