UOJ 21 縮排優化

2022-03-18 04:01:52 字數 1079 閱讀 1470

題鏈:

題解:

。。。技巧題吧

先看看題目讓求什麼:

令$f(x)=\sum_^(\lfloor a[i]/x \rfloor +a[i]$%$x)$

要求輸出最小的f(x)。

首先不難看出,x的取值不會超過最大的a[i]+1,(因為之後的答案都和x==a[i]+1時的答案相同)

把式子化為如下形式:

$f(x)=\sum_^(\lfloor a[i]/x \rfloor +(a[i]-\lfloor a[i]/x \rfloor x))$

$\quad\quad=\sum_^(a[i]-\lfloor a[i]/x \rfloor (1-x))$

$\quad\quad=sum-\sum_^(\lfloor a[i]/x \rfloor (1-x))$

$\quad\quad=sum+\sum_^(\lfloor a[i]/x \rfloor (x-1))$

現在即是要找出最大的$\sum_^(\lfloor a[i]/x \rfloor (x-1))$

然後我們令$t=\lfloor a[i]/x \rfloor$

(把a從小到大排序後)對於每乙個列舉的x,

不難發現,隨著a[i]的增大,t也是在單增,而且t的取值還是一段一段的。

即對於$a[i]∈ [\lambda x,(\lambda+1)x-1]  $,t的取值都是$\lambda$

所以我們可以用字尾和或者字首和的方法對於每乙個列舉的x,快速求出$\sum_^(\lfloor a[i]/x \rfloor (x-1))=\sum_^t (x-1)$

使得總複雜度為 o(nlogn)

**:

#include#include#include#define maxn 1000050

#define inf 0x3f3f3f3f3f3f3f3f

using namespace std;

int cnt[maxn];

int main()

printf("%lld",sum-ans);

return 0;

}

優化mysql的21個建議 MySQL優化小建議

mysql優化小建議 洛逸發布於 2019 11 04 12 03 背景 那啥,你過來一下!怎麼了?我 都單元測試了的,沒出問題啊!我一臉懵逼跑到運維大佬旁邊。你看看!你看看!多少條報警,趕快優化一下!運維大佬簡訊列表裡面50多條mysql cpu 100 報警簡訊。再看看專案名稱不就是我前幾天剛發...

SQL優化(二) 2 1索引分類

索引是資料庫中較常用的優化手段之一,下面讓我們看看索引的分類和使用 索引的儲存分類 索引是在mysql 的儲存引擎層中實現的,而不是在伺服器層實現的。意味著每種儲存引擎的索引都不一定完全相同,也不是所有的儲存引擎都支援所有的索引型別。下面是三個比較常用的引擎支援的索引型別比較 myisam,memo...

2 1 優化神經網路(上)

3 其他的一些解決過擬合的方法 3.1 data augmentation 資料增加 3.2 early stopping 4 加快訓練速度的方法 4.1 early stopping 4.2 歸一化輸入 5 梯度消失和梯度 及其解決 6 梯度檢驗 都遍歷神經網路的每一層,並設定消除神將網路中節點的...