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

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

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

      P1725 琪露諾總結

      P1725 琪露諾

      題目描述

      在幻想鄉,琪露諾是以笨蛋聞名的冰之妖精。

      某一天,琪露諾又在玩速凍青蛙,就是用冰把青蛙瞬間凍起來。但是這只青蛙比以往的要聰明許多,在琪露諾來之前就已經跑到了河的對岸。于是琪露諾決定到河岸去追青蛙。

      小河可以看作一列格子依次編號為 \(0\)\(N\),琪露諾只能從編號小的格子移動到編號大的格子。而且琪露諾按照一種特殊的方式進行移動,當她在格子 \(i\) 時,她只移動到區間 \([i+L,i+R]\) 中的任意一格。你問為什么她這么移動,這還不簡單,因為她是笨蛋啊。

      每一個格子都有一個冰凍指數 \(A_i\),編號為 \(0\) 的格子冰凍指數為 \(0\)。當琪露諾停留在那一格時就可以得到那一格的冰凍指數 \(A_i\)。琪露諾希望能夠在到達對岸時,獲取最大的冰凍指數,這樣她才能狠狠地教訓那只青蛙。

      但是由于她實在是太笨了,所以她決定拜托你幫它決定怎樣前進。

      開始時,琪露諾在編號 \(0\) 的格子上,只要她下一步的位置編號大于 \(N\) 就算到達對岸。

      輸入格式

      第一行三個正整數 \(N, L, R\)。

      第二行共 \(N+1\) 個整數,第 \(i\) 個數表示編號為 \(i-1\) 的格子的冰凍指數 \(A_{i-1}\)

      輸出格式

      一個整數,表示最大冰凍指數。

      輸入輸出樣例 #1

      輸入 #1

      5 2 3
      0 12 3 11 7 -2
      

      輸出 #1

      11
      

      說明/提示

      對于 \(60\%\) 的數據,\(N \le 10^4\)。

      對于 \(100\%\) 的數據,\(N \le 2\times 10^5\),$-10^3 \le A_i\le 10^3 $,$1 \le L \le R \le N $。數據保證最終答案不超過 \(2^{31}-1\)。

      思路

      $ dp[i]=max(dp[i-R],...,dp[i-L])+a[i]$

      又因為[L,R]是一個固定的區間,所以很容易想到單調隊列

      代碼

      AC代碼
      #include<bits/stdc++.h>
      using namespace std;
      const int N=2e5+5;
      int a[N],dp[N];
      int n;
      int L,R;
      int q[N];
      int ans=-1e9;
      int main(){
      	cin>>n;
      	cin>>L>>R;
      	for(int i=0;i<=n;i++){
      		cin>>a[i];
      		dp[i]=-1e9;//注意初始化
      	}
      	int l=1,r=0;//注意
      	dp[0]=0;
      	for(int i=L;i<=n;i++){//注意注意注意,要確保在形成合法的區間的前提下dp(要確保在不越界的前提下dp),所以i=L
      		while(l<=r&&q[l]+R<i) l++;//要確定單調隊列的起點和終點
      		while(l<=r&&dp[q[r]]<=dp[i-L]) r--;
      		q[++r]=i-L;
      		dp[i]=dp[q[l]]+a[i];
      		if(i+R>n){//最終情況
      			ans=max(ans,dp[i]);
      		}
      	}
      //	for(int i=0;i<=n;i++){
      //		cout<<dp[i]<<" ";
      //	}
      //	cout<<endl;
      	cout<<ans;
      	return 0;
      } 
      

      錯因分析

      • for(int i=L;i<=n;i++) 要確保在形成合法的區間的前提下dp(要確保在不越界的前提下dp),所以i=L
      • while(l<=r&&dp[q[r]]<=dp[i-L]) r--;
      • q[++r]=i-L; 這兩句都是要確定單調隊列的左右斷點,因此是i-L
      posted @ 2025-10-13 21:10  zjr20120321  閱讀(11)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 免费看美女被靠到爽的视频| 亚洲香蕉网久久综合影视| 久久国产自偷自偷免费一区 | h无码精品动漫在线观看| 成人av天堂网在线观看| 麻豆成人av不卡一二三区| 婷婷国产成人精品视频| 亚洲国产成人精品区综合| 国产高在线精品亚洲三区| 色欲久久久天天天综合网精品| 中文字幕在线无码一区二区三区 | 亚洲国产成人va在线观看天堂| 亚洲一精品一区二区三区| 人妻有码中文字幕在线| 无码国内精品久久人妻蜜桃| 国产欧美精品一区aⅴ影院| 成人无码视频在线观看免费播放| 亚洲最大中文字幕无码网站| 黑人强伦姧人妻久久| 真实国产老熟女无套内射| 亚洲成年av天堂动漫网站| 国产在线精品一区二区夜色| 亚洲综合小综合中文字幕| 久久精品国产一区二区三 | 久热这里有精品视频播放| 久久精品国产99精品亚洲| 成全影视大全在线观看| 亚洲人成人一区二区三区| 国产精品无遮挡又爽又黄| 亚洲人成网网址在线看| 性无码一区二区三区在线观看 | 精品国产粉嫩一区二区三区| 好男人视频www在线观看| 久久99热只有频精品8| 日本一区二区三区在线看| 国产一区二区高清不卡| 精品久久久噜噜噜久久久| 日本不卡一区二区三区在线| 狠狠综合久久综合88亚洲| 中文字幕乱码无码人妻系列蜜桃| 亚洲av成人网人人蜜臀|