zoukankan      html  css  js  c++  java
  • 四月份该做的事情

    四月该做的事情

    1. 每周一套cf题
    2. python 入门
    3. 把实验都做完吧,还有课程

    习题巩固

    石子归并 https://www.lintcode.com/problem/stone-game/description

    int stoneGame(vector<int> &A) {
        int l = A.size();
        int dp[510][510]={0};
        long long sum[510][510]={0};
        for(int i=0; i<l; i++)
            for(int j=i; j<l; j++) {
                sum[i][j] = sum[i][j-1] + A[j];
                // printf("sum[%d][%d]: %d ",i,j,sum[i][j]);
                // if(j == l-1) puts("");
            }
        for(int len=2; len<=l; len++) {
            for(int i=0; i+len-1 <l; i++) {
                int j = i+len-1;
                long long mn = 0x3f3f3f3f;
                for(int k=i; k<j; k++) {
                    mn = min(mn, dp[i][k] + dp[k+1][j] + sum[i][j]);
                    //printf("%d, %d, %d %d %lld
    ",i,j,dp[i][j],dp[i+1][j],dp[i][j] + dp[j+1][k] + sum[i][j]);
                }
                dp[i][j] = (int)mn;
                //printf("dp[%d][%d]: %d ",i,j,dp[i][j]);
               // if(j == l-1) puts("");
            }
        }
        return dp[0][l-1];
    }
    

    吹气球 https://www.lintcode.com/problem/burst-balloons/description
    有n个气球,编号为0到n-1,每个气球都有一个分数,存在nums数组中。每次吹气球i可以得到的分数为 nums[left] * nums[i] * nums[right],left和right分别表示i气球相邻的两个气球。当i气球被吹爆后,其左右两气球即为相邻。要求吹爆所有气球,得到最多的分数。

    dp[i][j] 表示 区间[i,j]的都被打爆的最大收益
    那么 dp[i][j] = max(dp[i][k-1] + dp[k+1][j] + s[i-1] * s[k] * s[j+1])

    int maxCoins(vector<int>& nums) {
        int l = nums.size();
        int s[l+2];
        s[0] = 1, s[l+1] = 1;
        for(int i=0; i<l; i++)
            s[i+1] = nums[i];
        int dp[l+5][l+5] = {0};
        for(int i=1; i<=l; i++)
            dp[i][i] = s[i-1]*s[i]*s[i+1];
        for(int len=2; len<=l; len++) {
            for(int i=1; i+len-1<=l; i++) {
                int j = i+len-1;
                // [i.j]
                int mx = 0;
                for(int k=i; k<=j; k++) {
                    mx = max(mx, dp[i][k-1] + dp[k+1][j] + s[i-1] * s[k] * s[j+1]);
                }
                dp[i][j] = mx;
            }
        }
        return dp[1][l];
    }
    
  • 相关阅读:
    333333
    钢镚儿冲刺一周期第六天
    钢镚儿冲刺一周期第五天
    钢镚儿冲刺一周期第四天
    钢镚儿冲刺一周期第三天
    钢镚儿冲刺一周期第二天
    钢镚儿冲刺一周期第一天
    软件工程第九周总结
    CVPR论文的爬取
    构建之法读后感第五
  • 原文地址:https://www.cnblogs.com/Draymonder/p/10632489.html
Copyright © 2011-2022 走看看