Uva 1451 Average(數形結合)

2021-08-14 10:12:55 字數 739 閱讀 4691

題目鏈結 

紫書243頁例題,採用數形結合的方法,用deque來維護乙個單調結點的佇列,即不包含上凸點的序列,每次都更新結果,記錄最優解。

#includeusing namespace std;

const int maxn = 100050;

int n, l;

char st[maxn];

int s[maxn];

dequeque;

//a,b對應直線斜率大於c,d對應直線,返回值》0,小於則返回值<0,等於返回0

int check(int a, int b, int c, int d)

int main()

int ansl = 0, ansr = l;//ansl記錄左端點的前一位

for (int i = l; i <= n; ++i)

//加入j

que.push_back(j);

//把不可能是解的開頭若干項去掉

while (que.size() > 1)

//更新結果

int res = check(que[0], i, ansl, ansr);

if (res > 0 || 0 == res && i - que[0] < ansr - ansl)

} printf("%d %d\n", 1 + ansl, ansr);

} return 0;

}

uva 1451 Average 數形結合

數形結合那篇 的例題,維護乙個下凸佇列,一開始為了省事,用了棧,但是原理上有問題,因為有可能正好起點為上凸點的情況,wa了好多次 author jxy lang c c university china,xidian university if you need to reprint,please ...

uva 1451 Average 斜率優化

題意 給出乙個長度為n的字串 01串 要求找到長度至少為k的連續子串的最大平均值。n 1e5。解 對於任意一段 le,ri 的平均值,都有如下求法 sum ri sum le 1 ri le 1 將 le 1,sum le 1 看成是乙個點,是點le在圖上的點。對於每個點i,在圖上對應的點都是 i ...

Uva136 醜數 優先佇列

找出第1500個素因子只能有2或3或5的數。懵逼了吧,並不是素因子篩,用2,3,5去篩並不能得到滿足醜數要求的數,例如14就篩不掉。優先佇列每次取乙個最小的數x,2x,3x,5x,都是醜數,但是每次要判斷是否有重數 set 取1500,每次都是取出最小的數,取1500次之後就是第1500個數。inc...