2021-9-2非零段劃分(前綴和最簡解法)(c/c++實測滿分)-創(chuàng)新互聯(lián)

總結(jié)

? 區(qū)間原地劃分時可以觀察相鄰元素之間的大小關系是否與劃分有關。前綴和與差分實現(xiàn)單位時間內(nèi)區(qū)間數(shù)值整體加1。(ccf-csp第二題真的很愛考前綴和。)

創(chuàng)新互聯(lián)從2013年開始,先為泊頭等服務建站,泊頭等地企業(yè),進行企業(yè)商務咨詢服務。為泊頭企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

前綴和詳解:

一、題目要求

題目描述

A1,A2,?,An?是一個由?n?個自然數(shù)(非負整數(shù))組成的數(shù)組。我們稱其中?Ai,?,Aj?是一個非零段,當且僅當以下條件同時滿足:

  • 1≤i≤j≤n;
  • 對于任意的整數(shù)?k,若?i≤k≤j,則?Ak>0;
  • i=1?或?Ai?1=0;
  • j=n?或?Aj+1=0。

下面展示了幾個簡單的例子:

  • A=[3,1,2,0,0,2,0,4,5,0,2]?中的?4?個非零段依次為?[3,1,2]、[2]、[4,5]?和?[2];
  • A=[2,3,1,4,5]?僅有?1?個非零段;
  • A=[0,0,0]?則不含非零段(即非零段個數(shù)為?0)。

現(xiàn)在我們可以對數(shù)組?A?進行如下操作:任選一個正整數(shù)?p,然后將?A?中所有小于?p?的數(shù)都變?yōu)?0。試選取一個合適的?p,使得數(shù)組?A?中的非零段個數(shù)達到大。若輸入的?A?所含非零段數(shù)已達大值,可取?p=1,即不對?A?做任何修改。

輸入格式

從標準輸入讀入數(shù)據(jù)。

輸入的第一行包含一個正整數(shù)?n。

輸入的第二行包含?n?個用空格分隔的自然數(shù)?A1,A2,?,An。

輸出格式

輸出到標準輸出。

僅輸出一個整數(shù),表示對數(shù)組?A?進行操作后,其非零段個數(shù)能達到的大值。

樣例1輸入

11
3 1 2 0 0 2 0 4 5 0 2

Data

樣例1輸出

5
二、我的解法(70)
#includeusing namespace std;

const int N=1e5;
int a[N],b[N];
bool st[N];//該值是否曾經(jīng)出現(xiàn)過

int main(){
	int n;
	cin>>n;
	int num=0;
	for(int i=0;ia[i-1]){//a[i-1]到a[i]-1段的p都能構成新的非零段
			b[a[i]]--;//處理差分數(shù)組以實現(xiàn)區(qū)間整體+1
			b[a[i-1]]++;
		}
	}

	int ans=0;
	for(int i=1;i<=M;i++){
		b[i]+=b[i-1];//求前綴和
		if(b[i]>ans) ans=b[i];//記錄前綴和數(shù)組中的大值
	}
	  
	cout<

分析:

? 當a[i]>a[i-1]時,只要p取到區(qū)間a[i-1]到a[i]-1中的值,都能構成一個新的非零段。這就是p與數(shù)組的關系,根據(jù)這個關系利用前綴和與差分實現(xiàn)單位時間內(nèi)區(qū)間數(shù)值整體加1,將雙重循環(huán)改進至單層,降低計算時間。

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享題目:2021-9-2非零段劃分(前綴和最簡解法)(c/c++實測滿分)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://muchs.cn/article46/cdjseg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、網(wǎng)站收錄、ChatGPT全網(wǎng)營銷推廣、軟件開發(fā)外貿(mào)網(wǎng)站建設

廣告

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