国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巨鹿县| 阿尔山市| 肃宁县| 二手房| 武乡县| 宁海县| 保康县| 新巴尔虎左旗| 西华县| 渝北区| 收藏| 乌海市| 大竹县| 静海县| 苍南县| 九龙城区| 四子王旗| 嘉黎县| 蒙自县| 明溪县| 天气| 凤山县| 辽宁省| 梓潼县| 乐亭县| 永嘉县| 襄城县| 益阳市| 化隆| 西乌珠穆沁旗| 离岛区| 扎兰屯市| 五常市| 南漳县| 抚州市| 文水县| 许昌市| 观塘区| 霍州市| 南宁市| 大厂|