国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

HDU 1069 Monkey and Banana(基礎dp,記憶化搜索)

2019-11-08 02:04:49
字體:
來源:轉載
供稿:網友
/*基礎dpC - Monkey and Banana時間: 2017/02/20題意:疊放立方體,使其疊的高度最大。在按底的長寬排序后,進行求最大子序列和題解:1. 在按底的長寬排序后,進行求最大子序列和2. 類似嵌套問題,記憶化搜索*/#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<queue>#include<map>using namespace std;#define N 210#define INF 0x3f3f3f3f//1 ------------------------------struct code{    int x,y,z;}f[200];bool cmp(code a,code b){    if(a.x != b.x)        return a.x > b.x;    return a.y > b.y;}int main(){    int n;    int k = 0;    while(~scanf("%d",&n)&&n)    {        k++;        int n1 = n;        int i = 0;        while(n1--)        {            int a[3];            scanf("%d%d%d",&a[0],&a[1],&a[2]);            sort(a,a+3);            f[i].y = f[i+1].z = f[i+2].x = a[1];            f[i].x = f[i+1].x = f[i+2].z = a[2];            f[i].z = f[i+1].y = f[i+2].y = a[0];            i += 3;        }        sort(f,f+3*n,cmp);        int dp[200];        int maxn=0;        for(i=0;i<3*n;i++)        {            dp[i] = f[i].z;            for(int j = i-1; j >=0; j--)            {                if(f[j].x > f[i].x && f[j].y > f[i].y)                {                    if(dp[i] < dp[j] + f[i].z)                        dp[i] = dp[j] + f[i].z;                }            }            if(dp[i] > maxn)                maxn = dp[i];        }        PRintf("Case %d: maximum height = %d/n",k,maxn);    }    return 0;}//2 ------------------------------struct code{    int x,y,z;}f[N];int mp[N][N],dp[N];int n;int dfs(int i){    int &ans = dp[i];    if(ans > 0) return ans;    ans = f[i].z;    for(int j = 0; j < 3*n; j++)    {        if(mp[i][j])            ans = max(ans, dfs(j)+f[i].z);    }    return ans;}int main(){    int k = 0;    while(~scanf("%d",&n)&&n)    {        k++;        int n1 = n;        int i = 0;        while(n1--)        {            int a[3];            scanf("%d%d%d",&a[0],&a[1],&a[2]);            sort(a,a+3);            f[i].y = f[i+1].z = f[i+2].x = a[1];            f[i].x = f[i+1].x = f[i+2].z = a[2];            f[i].z = f[i+1].y = f[i+2].y = a[0];            i += 3;        }        memset(mp,0,sizeof(mp));        memset(dp,0,sizeof(dp));        for(int i = 0; i < 3*n; i++)        {            for(int j = 0; j < 3*n; j++)            {                if(f[i].x < f[j].x && f[i].y < f[j].y)                    mp[i][j] = 1;            }        }        int maxn = 0;        for(int i = 0; i < 3*n; i++)        {            maxn = max(maxn,dfs(i));        }        printf("Case %d: maximum height = %d/n",k,maxn);    }    return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 诸暨市| 石屏县| 茂名市| 彭山县| 吴忠市| 宝兴县| 林西县| 胶州市| 富宁县| 河东区| 商城县| 宾阳县| 云梦县| 平山县| 黄平县| 广东省| 宜章县| 汕头市| 白沙| 恩平市| 兰溪市| 翁源县| 凤庆县| 前郭尔| 繁昌县| 若尔盖县| 晋城| 吴川市| 永安市| 富锦市| 广元市| 铜鼓县| 福安市| 西乡县| 鱼台县| 鹰潭市| 防城港市| 山西省| 铁岭县| 武穴市| 昌乐县|