lightoj 1223 - Testing Mailboxes 区间DP

来源:互联网 发布:网络上xc是什么意思 编辑:程序博客网 时间:2024/05/17 05:57

给定n个盒子,然后盒子有个坚固程度,可以抵抗x个炸弹的同时爆炸抵挡不了x+1那么坚固程度就是x。现在给出n个盒子,坚固程度最大可能值为m,问需要多少个炸弹才才能确定精确的坚固程度。

因为T是1W肯定是个打表题。

开始没看懂以为炸弹可以一个一个放,也就是x放上去没炸开,下次在放一个...

参考了窝A的博客:点击打开链接

#include<bits/stdc++.h>using namespace std;#define ll long long#define ull unsigned long long#define mod 100000007#define inf 0x3f3f3f3fll dp[111][111][111];int main(){    memset(dp,0,sizeof(dp));    for(int i=0;i<=100;i++)    {        for(int j=i;j<=100;j++)            dp[1][i][j]=(ll)(i+j)*(j-i+1)/2;    }    for(int i=2;i<=100;i++)    {        for(int j=100;j>=1;j--)        {            for(int k=j;k<=100;k++)            {                dp[i][j][k]=inf;                for(int x=j;x<=k;x++)                {                    dp[i][j][k]=min(dp[i][j][k],x+max(dp[i-1][j][x-1],dp[i][x+1][k]));                }            }        }    }    int t;    scanf("%d",&t);    for(int cas=1;cas<=t;cas++)    {        int k,m;        scanf("%d %d",&k,&m);        printf("Case %d: %lld\n",cas,dp[k][1][m]);    }    return 0;}


0 0
原创粉丝点击