Bribe the prisoners

1,反正这监狱的描述让我想起了我曾经写过的一道题(可能吧)

先研究下题目,一般题目都得先看好多遍,

 2,自己起码得思考10min.

3,网上的题解就是nb,直接来个区间DP水题,,

然鹅DP难,就这循环上面的判断条件就很恶心。

网上找靠谱的题解很重要!

和最优二叉查找树差不多的DP。

看不懂啊,日了狗了。

咋就区间长度是2就能有释放一个的囚犯?

咋不三呢。

反向逼问我们如何快速学这个东西。。。

可能我手段还是太单一。

靠谱的题解,靠谱的代码。

const 不会用了。

const int INT_MAX=100000005;

我这个怎么错了

4,

#include<iostream>
#include<algorithm>
#define INT_MAX 1000005
using namespace std;
int P,Q,A[1005];
int dp[1005][1005];
int main(){
    cin>>P>>Q;
    for(int i=1;i<=Q;i++) cin>>A[i];
    A[0]=0;
    A[Q+1]=P+1;
    //为啥是P+1?
    for(int q=0;q<=Q;q++)
        dp[q][q+1]=0;
    //所谓初始化?
    for(int w=2;w<=Q+1;w++)
    //Q+1是个什么操作
    {
        for(int i=0;i+w<=Q+1;i++)
        {//看看这个i+w<=Q+1 
            int j=i+w;
            int t=INT_MAX;
            for(int k=i+1;k<j;k++)
            {
                t=min(t,dp[i][k]+dp[k][j]);
            }
            dp[i][j]=t+A[j]-A[i]-2;
        }
     } 
    cout<<dp[0][Q+1]<<endl;
} 

5,大概懂思想了,现在是背代码?

反正搞到半就不搞这个了

posted @ 2020-02-04 20:30  北月真好  阅读(150)  评论(0编辑  收藏  举报