<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      AT_joisc2019_j 題解

      先考慮這個式子:

      \[\sum_{j=1}^{M} |C_{k_{j}} - C_{k_{j+1}}| \]

      一定是在 \(C\) 有序時取到,具體證明很簡單各位讀者自己證明。

      那么現在式子變成:

      \[\sum{V} + 2 \times({C_{\max} - C_{\min}}) \]

      這個時候一個常見的技巧是將 \(C\) 排序。

      這個時候就可以定義狀態:

      \[dp_{i,j} = \sum{V} + 2 \times (C_{j} - C_{i}) \]

      然后從貪心的思想出發,\(V\) 一定是選取區間 \([i,j]\) 中最大的 \(M\) 個。

      \(f(i,j)\) 表示區間 \([i,j]\) 中前 \(M\) 大之和,有:

      \[dp_{i,j} = f(i,j) + 2 \times (C_{j} - C_{i}) \]

      考慮去掉一維狀態:

      \[dp_{i} = \max{(f(i,j) + 2 \times C_{j})} - 2 \times C_i \]

      因為 \(f(i,j) + 2 \times C_{j}\) 滿足四邊形不等式,所以 \(dp_{i}\) 滿足決策單調性,考慮分治優化,\(f(i,j)\) 可以直接用主席樹求解。

      那么我們就 \(O(n \log^2 n)\) 地做完了。

      #include<bits/stdc++.h>
      #define int long long
      using namespace std;
      //dp[l][r] 表示區間 [l,r] 內前 M 大
      //求 max(dp[l][r])
      //max_{r>l}(dp[l][r])
      //設計狀態 dp[i] 表示區間 [i,j] 前 M 大之和減去 2*(c[j]-c[i]) 
      //dp[i]=max{f(i,j)-2*c[j]}+2*c[i]
      const int maxn = 2e5+114;
      const int top = 1e9+114;
      const int inf = 2e18+114514;
      int dp[maxn];
      int n,m;
      struct Node{
          int sum,ls,rs;
      	int val;
      }tr[maxn*35];
      struct hhx{
      	int c,v;
      }a[maxn];
      int root[maxn],tot;
      inline int kth(int lt,int rt,int L,int R,int k){
          if(lt==rt){
          	return k*lt;
      	}
          int mid=(lt+rt)>>1;
          if((tr[tr[R].rs].sum-tr[tr[L].rs].sum)>=k){
              return kth(mid+1,rt,tr[L].rs,tr[R].rs,k);
          }
          else{
              return (tr[tr[R].rs].val-tr[tr[L].rs].val)+kth(lt,mid,tr[L].ls,tr[R].ls,k-(tr[tr[R].rs].sum-tr[tr[L].rs].sum));
          }
      }
      inline void add(int cur,int lst,int lt,int rt,int pos){
          tr[cur].sum=tr[lst].sum+1;
          tr[cur].val=tr[lst].val+pos;
          if(lt==rt){
              return ;
          }
          int mid=(lt+rt)>>1;
          if(pos<=mid){
              tr[cur].rs=tr[lst].rs;
              tr[cur].ls=++tot;
              add(tr[cur].ls,tr[lst].ls,lt,mid,pos);
          }
          else{
              tr[cur].ls=tr[lst].ls;
              tr[cur].rs=++tot;
              add(tr[cur].rs,tr[lst].rs,mid+1,rt,pos);
          }
      }
      //前 k 大之和 
      void solve(int l,int r,int L,int R){
      	if(l>r) return ;
      	int mid=(l+r)>>1;
      	int mx=-inf,p=0;
      	for(int i=max(mid+m-1,L);i<=R;i++){
      		if(kth(1,top,root[mid-1],root[i],m)-2*a[i].c>mx){
      			mx=kth(1,top,root[mid-1],root[i],m)-2*a[i].c;
      			p=i;
      		}
      	}
      	dp[mid]=mx+2*a[mid].c;
      	solve(l,mid-1,L,p);
      	solve(mid+1,r,p,R);
      }
      bool cmp(hhx A,hhx B){
      	return A.c<B.c;
      }
      signed main(){
          ios::sync_with_stdio(0);
          cin.tie(0);
          cout.tie(0);
      	cin>>n>>m;
      	for(int i=1;i<=n;i++) dp[i]=-inf;
      	for(int i=1;i<=n;i++) cin>>a[i].v>>a[i].c;
      	sort(a+1,a+n+1,cmp);
      	for(int i=1;i<=n;i++){
      		root[i]=++tot;
      		add(root[i],root[i-1],1,top,a[i].v);
      	}
      	solve(1,n-m+1,1,n);
      	int ans=-inf;
      	for(int i=1;i<=n;i++) ans=max(ans,dp[i]);
      	cout<<ans;
      }
      
      posted @ 2024-02-27 18:12  ChiFAN鴨  閱讀(26)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品不卡区一区二| 亚洲精品美女一区二区| 2022亚洲男人天堂| 日韩精品亚洲 国产| 无码日韩av一区二区三区| 一级女性全黄久久生活片| 亚洲国产精品区一区二区| 国产免费无遮挡吸奶头视频| 2021国产精品视频网站| 一级女性全黄久久生活片| 中文字幕精品久久久久人妻红杏1| 午夜成人无码免费看网站| 国产精品一精品二精品三| 亚洲AV无码乱码在线观看性色扶| 奇米四色7777中文字幕| 任我爽精品视频在线播放| 少妇被粗大猛进进出出| 人人妻碰人人免费| 久久av无码精品人妻出轨| 成人亚洲欧美一区二区三区| 国产人妻无码一区二区三区18| 好紧好滑好湿好爽免费视频| 国产成人精品无人区一区| 国产午夜成人久久无码一区二区| 通辽市| 高级艳妇交换俱乐部小说| 加勒比无码人妻东京热| 免费观看又色又爽又黄的崩锅| 国产女人在线视频| 亚洲欧洲自拍拍偷午夜色| 精品日韩亚洲av无码| 日韩人妻不卡一区二区三区| 久久综合色一综合色88| 亚洲国产精品久久久天堂麻豆宅男 | 97久久精品人人做人人爽| 国产精品一区二区三区蜜臀| 中文字幕日韩熟女av| 亚洲男人第一无码av网| 韩国免费a级毛片久久| 99中文字幕国产精品| 国产日本一区二区三区久久|