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,大概懂思想了,现在是背代码?
反正搞到半就不搞这个了