欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

codeforces455E-創(chuàng)新互聯(lián)

題目:http://codeforces.com/problemset/problem/455/Ecodeforces455E

題意:給定數(shù)組a,及f的定義:

成都創(chuàng)新互聯(lián)專注于治多企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),成都做商城網(wǎng)站。治多網(wǎng)站建設(shè)公司,為治多等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站開發(fā),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

    f[1][j] = a[j];  1 <= j <= n

    f[i][j] = min(f[i-1][j-1], f[i-1][j]) + a[j];  2 <= i <= j <= n

 給定q個詢問,每個詢問為l,r,求f[l][r]

My solution:

 寫一些小數(shù)據(jù)就可以發(fā)現(xiàn),其實對于一個詢問l,r,其實等價于:

       從[r-l+1, r]這個區(qū)間內(nèi)取l個數(shù),使其和最小。但是比較特殊的是,一個數(shù)可以取多次,并且如果取了一個x,那么[x+1,r]間的所有數(shù)必須得取。

       例如,對于n=3, a = {2, 1, 3}

       詢問l=3, r=3的取法有:3+3+3=9, 3+3+1=7, 3+1+1=5, 3+1+2= 6;答案為3+1+1=5

   2.設(shè)答案f[l][r]的詢問答案合法區(qū)間是在[x, r]這一段取得的,我們還可以發(fā)現(xiàn)如下的性質(zhì):

     1)a[x]一定是[x,r]中最小的,否則存在 x<=y<=r, a[y] <= a[x],比[x,r]更優(yōu)的區(qū)間[y, r]

       除[y, r]的共同區(qū)間外,剩下的l-y-r個[y,r]區(qū)間可以全取a[y],顯然比[x,r]更小

     2)a[x+1]~a[y]各取一個,剩下的全取a[x],因為a[x]是區(qū)間最小元素,取越多答案越小

   3.基于2我們可以維護一個遞增的序列來求答案,但是這樣還是不夠,妥妥TlE

    只能看下決策之間有什么關(guān)系了;

    對于詢問(l,r)不妨設(shè)兩個決策k<j,并且決策k優(yōu)于j

    那么 (sum[r] - sum[k]) - (l - (r - k)) * a[k] <= (sum[r] - sum[j]) - (l - (r - j)) * a[j];

    整理一下式子:

         (sum[k] - a[k]*k) - (sum[j] - a[j]*j) / (a[k] - a[j]) <= l - r;

    這不就是個斜率的式子,剩下的就是維護一個凸殼即可

    4.具體的話對于詢問按照r排序,然后離線做

      然后二分一左邊界,找到合法區(qū)間完,再二分找到合法的斜率。具體看代碼吧

code:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <string>
 5 #include <cmath>
 6 #include <algorithm>
 7 #include <vector>
 8 #include <cstdlib>
 9 #include <sstream>
10 #include <fstream>
11 #include <list>
12 #include <deque>
13 #include <queue>
14 #include <stack>
15 #include <map>
16 #include <set>
17 #include <bitset>
18 #include <cctype>
19 #include <ctime>
20 #include <utility>
21 #define M0(x) memset(x, 0, sizeof(x))
22 #define pb push_back
23 #define mp make_pair
24 #define x first
25 #define y second
26 #define vii vector< pair<int, int> >::iterator 
27 using namespace std;
28 const int maxn = 100010;
29 vector< pair<int, int> > ask[maxn];
30 int n, m;
31 long long sum[maxn], ans[maxn];
32 int s[maxn], top, a[maxn];
33 
34 inline double slope(int k, int j){
35  double yk = sum[k] - (double)k * a[k], yj = sum[j] - (double)j * a[j];
36  return (yk - yj) / (a[k] - a[j]);
37 }
38 
39 void init(){
40   for (int i = 1; i <= n; ++i)
41         scanf("%d", a+i), sum[i] = sum[i-1] + a[i];
42   for (int i = 0; i <= n; ++i) ask[i].clear();
43     scanf("%d", &m);
44   int l, r;
45   for (int i = 0; i < m; ++i){
46          scanf("%d%d", &l, &r);
47          ask[r].pb(mp(l, i));
48     }
49 }
50 
51 void solve(){
52   int top = 0;
53   int l, r, mid, pos;
54   for (int i = 1; i <= n; ++i){
55   while (top > 0 && a[s[top]] >= a[i]) --top;
56   while (top > 1 && slope(s[top], i) >= slope(s[top-1], i)) --top;
57           s[++top] = i;
58   for (vii it = ask[i].begin(); it != ask[i].end(); ++it){
59                 l = lower_bound(s+1, s+top+1, i-it->x+1) - s;
60                 r = top-1, pos = i;
61   while (l <= r){
62                       mid = (l + r) >> 1;
63   if (slope(s[mid], s[mid+1]) <= it->x - i) pos = s[mid], r = mid - 1;
64   else l = mid + 1;
65                 }
66                 ans[it->y] = sum[i] - sum[pos] + (long long)a[pos]*(it->x+pos-i);
67           }    
68     }
69   for (int i = 0; i < m; ++i)
70        printf("%I64d
", ans[i]); 
71 }
72 int main(){
73 //    freopen("a.in","r",stdin);
74 //    freopen("a.out","w",stdout);75   while (scanf("%d", &n) != EOF){
76         init();
77         solve();
78     }
79   return 0;
80 }
View Code

文章標題:codeforces455E-創(chuàng)新互聯(lián)
URL地址:http://aaarwkj.com/article6/jsdog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網(wǎng)站改版、移動網(wǎng)站建設(shè)、網(wǎng)站設(shè)計靜態(tài)網(wǎng)站、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
精品国产美女主播在线| 日本 一区二区在线| 成人av影视中文字幕 | 亚洲精品国产熟女av| 日韩精品一区高清视频| 国产成人一区二区三区影| 亚洲中文字幕精品一区二区三区| 国产一区二区三区区别| 极品少妇高潮在线观看免费| 日本国产美女精品一区二区| 成人午夜在线免费观看| 天堂av免费资源在线观看| 亚洲91精品一区二区三区| 97免费人妻在线视频| 懂色av免费在线播放| 久久久国产精品久久久| 五月开心婷婷中文字幕| 亚洲精品另类中文字幕| 亚洲视频在线的视频在| 精品亚洲韩国一区二区三区| 日日躁夜夜躁久久狠狠躁| 久久精品国产欧美日韩| 亚洲欧美日韩制服另类| 抱着操才爽的免费视频观看| 国产精品国产成人免费看| 日本东京热不卡一区二区| 亚洲免费黄色大片网站| 国产农村妇女一区二区三区| 国产精品人一区二区三区| 麻豆国产传媒片在线观看 | 一本久久精品午夜福利| 未满十八周岁禁看视频| 久久精品欧美日韩视频| 免费无遮挡午夜视频网站| 免费看国产一级黄色大片| 欧美黄片网站免费观看| 精品国产第一区二区三区| 蜜臀av午夜福利在线观看| 欧美激情中文字幕日韩精品| 高清区一区二区在线播放| 国产无遮挡的免费视频|