日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > POJ 1552 BUY LOW, BUY LOWER(最長單調遞減子序列求方案數(shù))

POJ 1552 BUY LOW, BUY LOWER(最長單調遞減子序列求方案數(shù))

來源:程序員人生   發(fā)布時間:2015-08-13 08:40:21 閱讀次數(shù):2881次
BUY LOW, BUY LOWER
Time Limit: 1000MS   Memory Limit: 30000K
     

Description

The advice to "buy low" is half the formula to success in the bovine stock market.To be considered a great investor you must also follow this problems' advice: 
                    "Buy low; buy lower"

Each time you buy a stock, you must purchase it at a lower price than the previous time you bought it. The more times you buy at a lower price than before, the better! Your goal is to see how many times you can continue purchasing at ever lower prices. 

You will be given the daily selling prices of a stock (positive 16-bit integers) over a period of time. You can choose to buy stock on any of the days. Each time you choose to buy, the price must be strictly lower than the previous time you bought stock. Write a program which identifies which days you should buy stock in order to maximize the number of times you buy. 

Here is a list of stock prices: 
 Day   1  2  3  4  5  6  7  8  9 10 11 12

Price 68 69 54 64 68 64 70 67 78 62 98 87


The best investor (by this problem, anyway) can buy at most four times if each purchase is lower then the previous purchase. One four day sequence (there might be others) of acceptable buys is: 
Day    2  5  6 10

Price 69 68 64 62

Input

* Line 1: N (1 <= N <= 5000), the number of days for which stock prices are given 

* Lines 2..etc: A series of N space-separated integers, ten per line except the final line which might have fewer integers. 

Output

Two integers on a single line: 
* The length of the longest sequence of decreasing prices 
* The number of sequences that have this length (guaranteed to fit in 31 bits) 

In counting the number of solutions, two potential solutions are considered the same (and would only count as one solution) if they repeat the same string of decreasing prices, that is, if they "look the same" when the successive prices are compared. Thus, two different sequence of "buy" days could produce the same string of decreasing prices and be counted as only a single solution. 

Sample Input

12 68 69 54 64 68 64 70 67 78 62 98 87

Sample Output

4 2


題意:給出n個數(shù),求最長單調遞減子序列的長度L,并求出有多少個序列的長度為L。

注意:5 3 1, 5 3 1算1種方案。

分析:由于n不超過5000,所以O(n^2)復雜度可以接受。那末我們就能夠依照平時求最長單調遞減子序列的方法,在求的時候加上1個輔助數(shù)組cnt[i]記錄從開始到第i個位置,單調遞減子序列為dp[i]時的方案數(shù)。

#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 1e4 + 10; int a[N], dp[N], cnt[N]; int main() { int n; while(~scanf("%d", &n)) { for(int i = 0; i < n; i++) { scanf("%d", &a[i]); dp[i] = 1; cnt[i] = 1; } for(int i = 1; i < n; i++) { for(int j = i - 1; j >= 0; j--) { if(a[i] < a[j]) { if(dp[i] < dp[j] + 1) { // 第1次找到能使長度變長的元素 dp[i] = dp[j] + 1; cnt[i] = cnt[j]; } else if(dp[i] == dp[j] + 1) // 之前已找到了1個使得dp[i] = dp[j] +1的元素,現(xiàn)在又找到1個 cnt[i] += cnt[j]; } else { if(a[i] == a[j]) { if(dp[i] == 1) //用第i個位置上的數(shù)字替換第j個位置上的數(shù)字,構成的序列完全相同 cnt[i] = 0; break; } } } } int max_len = 0, ans_cnt = 0; for(int i = 0; i < n; i++) max_len = max(max_len, dp[i]); for(int i = 0; i < n; i++) if(dp[i] == max_len) ans_cnt += cnt[i]; printf("%d %d ", max_len, ans_cnt); } return 0; }



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 色综合一区二区三区 | 亚洲一区二区久久久 | 久久久久久一区二区三区四区别墅 | 黄色在线观看视频 | 自拍欧美亚洲 | 亚洲精品免费在线 | 国产精品久久久久久久美男 | 久久亚洲成人 | 久久久成人精品 | 日本在线看片 | 久久国产区 | 欧美com | 免费福利在线视频 | va视频 | 高清国产一区 | 国产日韩精品视频 | 欧美日韩激情在线一区二区三区 | 精品久久久一区二区 | 91精品中文字幕一区二区三区 | 久草在线观看首页 | 日韩av电影在线免费观看 | 欧美日韩国产传媒 | 99九九久久 | 99re6热在线精品视频播放 | 99精品国产高清一区二区麻豆 | 久久久久久久 | 日韩精品视频中文字幕 | 国产一区二区三区视频在线观看 | 99精品一区二区三区 | 亚洲免费在线观看视频 | 精品日韩中文字幕 | 中文字幕国产一区 | 九九九九精品九九九九 | jizz18毛片 | 日韩欧美在线观看 | 国产精品第一国产精品 | 福利影院在线 | 99久久精品国产麻豆演员表 | 一区在线不卡 | 欧美国产精品一区二区三区 | 成人福利一区 |