[动态规划]ACM预选赛F题 侠客行
這道題是我覺的這次預選賽中題目最難的一道,比賽過程中我并沒有做出來。
這種動態規劃的思路太巧秒了,我是想不到的。
再一次膜拜jxy學長
題目鏈接
描述
眾所周知,龍島主和木島主發現了俠客島上的武功秘訣,這武功秘訣是李白《俠客行》的圖解,含義極是深奧繁復。他二人修習數月后,忽對圖解中所示武功產生了歧見。二人相互辯難剖析,鉆研其中道理,然終不能解。于是廣邀天下奇才異能之士同來島上,各竭心思,一起參研。恰好其時島上的“斷腸蝕骨腐心草”開花,此草若再配以其他佐使之藥,熬成熱粥,服后于練武之士大有裨益。于是派出使者,邀請當世名門大派的掌門人、各教教主、各幫幫主到俠客島喝碗臘八粥,再請他們去參研圖解。現有許多人到了俠客島,他們決定先進行一番較量,當然了,點到為止。
現有n個人排成一行,編號為1…n,每個人的內力為ai。
對于每兩個人(這兩個人可以是同一個人),這兩個人及其之間的所有人進行一次較量,勝者為他們中內力最大者。求所有比賽中勝者內力和。
如果這場比賽只有一個人的話,他本身就是獲勝者。
輸入
第一行包含一個整數 T (0<T<=1000)表示有 T 組測試數據
對于每組數據輸入格式如下:
第一行為一個整數n (1<n<=100000)表示人的數量。
第二行為n個整數ai,(0<ai<10^9),表示第i個人的內力。
數據保證n的總和不超過10^6。(數據加強了,請用 long long)
輸出
輸出一個整數,為所有比賽中勝者內力和
輸入樣例
2
4
1 2 3 4
5
2 3 1 4 2
輸出樣例
30
49
提示
Sample1
(max(1)+max(2)+max(3)+max(4)) + (max(1,2)+max(2,3)+max(3,4)) + (max(1,2,3)+max(2,3,4)) +(max(1,2,3,4))
=(1+2+3+4) + (2+3+4) + (3+4) +4
Sample2
(2+3+1+4+2) + (3+3+4+4) + (3+4+4) + (4+4) + (4)
題解
這道題目讓我們求出在所有任意區間中最大值的和
題目數據量很大只能用 O(n)左右的算法
一下代碼是學長的,我復寫了一遍 加了幾行注釋 希望可以幫忙理解
總結
以上是生活随笔為你收集整理的[动态规划]ACM预选赛F题 侠客行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python在函数外调用变量
- 下一篇: 百度文库下载工具(所有源码)