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

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

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

      P4360 [CEOI 2004] 鋸木廠選址

      思路

      首先考慮暴力DP,我們預處理出從第 \(1\) 個點到第 \(n\) 個點木材重量、運輸距離與運輸費用的前綴和,枚舉兩個鋸木廠的位置,設其分別在 \(i\) 點和 \(j\) 點。

      易得狀態轉移方程為 $$ans=\min{f[j] \times (dis[j]-dis[i])+f[i] \times dis[i]-f[i] \times dis[n+1]+g[n+1]\ }$$ 其中 \(f[i]\) 表示木材重量,\(dis[i]\) 表示距離,\(g[i]\) 表示費用,時間復雜度 \(O(n^2)\)

      在P4360中,我們可以使用暴力DP水過該題,然而,加強數據后,明顯TLE,考慮優化。

      觀察式子,我們分為只和 \(j\) 有關的,和 \(i\)\(j\) 都有關的,只和 \(i\) 有關的三部分,可將其變形為 $$f[j] \times dis[j]=f[j] \times dis[i]-f[i] \times dis[i]+f[i] \times dis[n+1]+g[n+1]+ans$$ 對于該式子,可以進行斜率優化,我們想要使 \(-f[i] \times dis[i]+f[i] \times dis[n+1]+g[n+1]+ans\) 最小,也就是令一次函數的截距最小,下凸包維護各點,用斜率 \(dis[i]\) 查找即可,因為 \(dis[i]\)\(f[i]\) 均遞增,可用單調隊列實現,復雜度 \(O(n)\) 十分優秀。

      Code

      #include<bits/stdc++.h>
      #define ll long long
      #define lb long double
      using namespace std;
      const int M=1e5+10;
      int n,l;
      ll w[M],d[M];
      ll f[M],g[M],dis[M];
      ll dp[M];
      lb slope(int x,int y)
      {
      	return (lb)((lb)f[y]*dis[y]-(lb)f[x]*dis[x])/(lb)((lb)f[y]-(lb)f[x]);
      }
      int h=1,t=0,q[M];
      int main()
      {
      	//memset(dp,0x7f,sizeof(dp));
      	ll ans=1e18+5;
      	scanf("%d",&n);
      	for(int i=1;i<=n;i++)
      	{
      		scanf("%lld%lld",&w[i],&d[i]);
      		f[i]=f[i-1]+w[i];
      	}
      	for(int i=2;i<=n+1;i++)
      	{
      		g[i]=g[i-1]+f[i-1]*d[i-1];
      		dis[i]=dis[i-1]+d[i-1];
      	}
      	int j=1;
      	q[++t]=1;
      	for(int i=2;i<=n;i++)
      	{
      		while(h<t&&slope(q[h],q[h+1])<=dis[i]) h++;
      		ans=min(ans,f[q[h]]*(dis[q[h]]-dis[i])+f[i]*dis[i]-f[i]*dis[n+1]+g[n+1]);
      		while(h<t&&slope(q[t-1],q[t])>=slope(q[t],i)) t--;
      		q[++t]=i;
      		//ans=min(ans,f[j]*(dis[j]-dis[i])+f[i]*dis[i]-f[i]*dis[n+1]+g[n+1]);
      	}
      	printf("%lld\n",ans);
      	return 0;
      }
      /* 
      f[j]*dis[j] = f[j]*dis[i]  +  /-f[i]*dis[i]+f[i]*dis[n+1]+g[n+1]+ans/
        y					xk				常數b盡量小 
      */
      
      posted @ 2025-08-24 22:58  Naoxiaoyu  閱讀(16)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 女人的天堂A国产在线观看 | 国产精品亚洲五月天高清| 1区2区3区4区产品不卡码网站| 漂亮人妻中文字幕丝袜| 少妇的丰满3中文字幕| 国产精品一区二区小视频| 黄色三级亚洲男人的天堂| 欧美人与动zozo| 国产99视频精品免费视频36| 日本一区二区三区在线播放| 国产精品欧美福利久久| 中国女人和老外的毛片| 毛多水多高潮高清视频| 色综合夜夜嗨亚洲一二区| 免费又黄又爽又猛的毛片| 梁山县| 国产免费午夜福利蜜芽无码| 国产成人精品国产成人亚洲| 日本亚洲色大成网站www久久| 伊人久久大香线蕉av色婷婷色| 色综合网天天综合色中文| 国产一二三区在线| 亚洲av成人在线一区| 日韩av片无码一区二区三区| 国产一区二区高清不卡| 日韩免费无码人妻波多野| 无码人妻精品一区二区三区下载| 日本深夜福利在线观看| 国产精品久久久久久久久久| 日韩精品一二三黄色一级| 国产成人精品亚洲资源| 看全色黄大色黄大片 视频| 中文激情一区二区三区四区| 人妻系列中文字幕精品| 国产做a爱片久久毛片a片| 三级黄色片一区二区三区| 免费AV片在线观看网址| 无码少妇一区二区三区免费| 性xxxx搡xxxxx搡欧美| 日韩精品无码区免费专区| 色偷偷亚洲男人的天堂|