【動態規劃】【RQ208】奧運火炬到廈門_測試

來源:互聯網
上載者:User
題目描述

背景:5月12日,在廈門人民的熱烈歡迎下,象徵著和平、友誼、聖潔的奧運火炬終於來到了廈門,開始了傳遞……

描 述:廈門市市長宣布:“要把這次火炬接力辦的很有意義。”“有意義”是什麼意思呢。廈門市市長別出心裁地給它下了個定義:每個火炬手都有個意義值,可以將 他們順次看作一個首尾相接的環,而整個火炬接力的意義值是這個環的最大和連續子串。
比如: 串是 -2 2 0 1 -48 1,顯然其最大和連續子串是2 0 1,其和是3。
現在給定n個火炬手的意義值,請算出整個火炬接力的意義值(意義值可能為負數) 輸入格式

第1行一個整數n(1<=n<=1000000)表示n個火炬手
第2行有n個整數,每個整數都在 longint的範圍內。
新備忘:因為未知原因,導致正常程式在測評8 9 10三個測試點時TLE,所以本題暫時關閉後3個測試點。資料範圍改為5000 輸出格式

火炬接力的意義值。 範例輸入

2 1 3 範例輸出

4

三維狀態映像

 

最長子串和,化環為鏈

 

#include<iostream> #define maxn 5000 using namespace std; long a[2*(maxn+1)],ans; int main(){ long n; cin>>n; for (long i=1;i<=n;++i){ cin>>a[i]; if (a[i]<0) ++ans; } if (ans==n){ ans=INT_MIN; for (long i=1;i<=n;++i) if (a[i]>ans) ans=a[i]; } else{ ans=0; for (long i=1;i<=n;++i) a[i+n]=a[i]; for (long start=1;start<=n;++start){ long temp=0; for (long i=start;i-start+1<=n;++i){ if (temp+a[i]<0) temp=0; else temp+=a[i]; if (temp>ans) ans=temp; } } } cout<<ans<<endl; return 0; }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.