• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 7,comments - 3,trackbacks - 0

            Max Xor Sub-sequence II 
            Time Limit:1000MS  Memory Limit:32768K

            Description:

            Give you a sequence of integer numbers which are 1 or 0. You are to find the number of consecutive sub-sequence, which the xor value between all these numbers has the maximum value. The first number of the sequence is 1 and the last is 1. There are (n+1) 1’s in the sequence. N numbers will be given. The i-th number is the index of (i+1)-th 1 minus the index of i-th 1. For example: if the sequence is 1010100010001, 4 2 2 4 4 will be given.

             

            Input:

            There are multiple cases. For each case: Line 1: A single integer N (1<=N<=20000). Followed N integers ranging from 1 to 20000.

            Output:

            For each case output the result in a single line.

            Sample Input:

            4
            2 2 4 4
            5
            3 1 2 4 5
            

            Sample Output:

            49
            70
            

            Hint:

            1.1 ^ 1 = 0, 1 ^ 0 = 1, 0 ^ 1 = 1, 0 ^ 0 = 0. 2.In the example, sub-sequence 10 has the maximum value ‘cause 1 xor 0 = 1;the same as 10101, 1010100010001, and so on.

            算不上DP的DP......就是處理01串的奇偶性.....
            DP[i][j]表示第i個(gè)1,j有6種情況。
            dp[i][0] = dp[i - 1][1] 表示偶數(shù)個(gè)1,且最后一個(gè)1在末尾。
            dp[i][1] = dp[i - 1][0] + dis 表示奇數(shù)個(gè)1,且最后一個(gè)1在末尾。
            dp[i][2] = f[i - 1][2] + f[i - 1][0] 表示偶數(shù)個(gè)1,且最后一個(gè)1不在末尾。
            dp[i][3] = f[i  - 1][3] + f[i - 1][1] 表示偶數(shù)個(gè)1,且最后一個(gè)1不在末尾。
            dp[i][4] = f[i - 1][4] + (dis - 1) * f[i - 1][0] 表示偶數(shù)個(gè)1,且最后一個(gè)是0不在末尾。
            dp[i][5] = f[i - 1][5] + (dis - 1) * f[i - 1][0] 表示偶數(shù)個(gè)1,且最后一個(gè)是0不在末尾。
            上面六個(gè)關(guān)系式列舉了所以情況,但是只用到了(dp[i][0], dp[i][1], dp[i][3], dp[i][5])四個(gè)式子。

            友情提示,ans是超過(guò)int的,用long long吧,我因?yàn)檫@個(gè)吃了三次WA.....

            代碼:

            #include <cstdio>
            #include <cstring>
            #include <iostream>
            using namespace std;

            int main()
            {
                long long dp[20010][7];
                long long n;
                long long dis;
                while (cin >> n)
                {
                    memset(dp, 0, sizeof(dp));
                    dp[1][0] = 0;
                    dp[1][1] = 1;
                    for (long long i = 2; i <= n + 1; ++i)
                    {
                        cin >> dis;
                        dp[i][0] = dp[i - 1][1];
                        dp[i][1] = dp[i - 1][0] + dis;
                        dp[i][3] = dp[i - 1][3] + dp[i - 1][1];
                        dp[i][5] = dp[i - 1][5] + (dis - 1) * dp[i - 1][1];
                    }
                    cout << dp[n + 1][1] + dp[n + 1][3] + dp[n + 1][5] << endl;
                }
                return 0;
            }

            posted on 2011-10-15 22:15 LLawliet 閱讀(234) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 動(dòng)態(tài)規(guī)劃
            久久婷婷是五月综合色狠狠| 狠狠色丁香久久综合婷婷| 久久久久亚洲爆乳少妇无| 精品久久久久久无码中文字幕| 伊人久久大香线蕉成人| 久久精品国产亚洲AV电影| 久久人妻少妇嫩草AV蜜桃| 国产成人精品综合久久久久| 久久久久久a亚洲欧洲aⅴ| 久久久久久精品免费免费自慰| 久久国产乱子精品免费女| 欧美亚洲国产精品久久| 狠狠色丁香久久综合五月| 香蕉99久久国产综合精品宅男自 | 伊人久久大香线焦综合四虎| 欧美麻豆久久久久久中文| 久久精品无码一区二区无码 | 日韩精品久久久久久久电影| 久久精品国产影库免费看| 精品久久久久久中文字幕大豆网| 亚洲国产精品久久66| 香蕉久久av一区二区三区| 亚洲欧美精品一区久久中文字幕| 久久中文字幕一区二区| 韩国三级大全久久网站| 亚洲午夜久久久久久噜噜噜| 久久久国产99久久国产一| 久久香蕉国产线看观看猫咪?v| 91精品国产91热久久久久福利| 99国产欧美久久久精品蜜芽| 久久夜色精品国产噜噜麻豆| 亚洲va久久久久| 久久久久免费精品国产| 久久91精品国产91| 久久精品日日躁夜夜躁欧美| 国内精品综合久久久40p| 伊人久久成人成综合网222| 亚洲v国产v天堂a无码久久| 亚洲欧美日韩精品久久亚洲区| 亚洲国产成人精品91久久久 | 亚洲午夜久久久久久噜噜噜|