问题描述:有n个矩阵,每个矩阵可以用两个整数a,b来表示 ,表示他的长和宽,矩阵X (a,b) 可以 嵌套 到Y (c,d) 里面当且仅当 a < c && b < d || a < d && b < c . 选出最多这种矩阵.先输出最多的数量,在输出最小字典序路径. 问题分析:本题是DAG(有向无环图)最长路问题,设d[i]为以i结尾的最长链的长度,则状态转移方程为:d[i]=max{0,d[j]|矩形j可以嵌套在矩形i中}+1 ;这里用ma
本来是个很水的DP,结果被自己的代码习惯给打败了 代码: #include<iostream> #include<stdlib.h> #include<string.h> using namespace std; typedef struct rectangle { int x; int y; }Rectangle; Rectangle a[]; ][]; ]; int N; int dp(int t) { int &ans = d[t]; ) return a
dp 将石块按三个面存入队列 按底面积排序 dp就最大高度 按嵌套矩形最长路做做法 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct tone { int x,y,z; void t(int a, int b, int c) { x = a; y = b; z = c; } }; bool