題意:有n個立方體,每一面都有顏色,現在要用他們堆出高度盡量高的塔,條件是,兩個接觸的塊,他們的接觸面顏色要一樣,同時上面的塊重量要嚴格小於他下面的。
與lis思想一樣,題目給出的資料是按重量遞增的
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define pb push_back
#define cl(a,b) memset(a,b,sizeof(a))
#define bug printf("===\n");
#define rep(a,b) for(int i=a;i#define rep_(a,b) for(int i=a;i<=b;i++)
#define p pair
#define x first
#define y second
#define vi vector
const
int maxn=50002;
const
int inf=999999999;
typedef
long
long ll;
void max(int&a,int b)
int color[6];
char s[6][20]=;
int dp[maxn];
int f[maxn];
struct node
node(int a,int b,int c,int r):top(a),bom(b),weight(c),s(r){}
}p[maxn];
void out(int x)
int main()
for(int j=0;j<6;j++)else }}
cl(dp,0);
cl(f,-1);
int ans=0,index=0;
for(int i=0;ifor(int j=i+1;jif(dp[j]1&&p[j].weight>p[i].weight&&p[j].top==p[i].bom)
if(ansif (cas)
printf("\n");
printf("case #%d\n%d\n", ++cas, ans + 1);
out(index);
}return0;}
/*31 2 2 2 1 2
3 3 3 3 3 3
3 2 1 1 1 1
101 5 10 3 6 5
2 6 7 3 6 9
5 7 3 2 1 9
1 3 3 5 8 10
6 6 2 2 4 4
1 2 3 4 5 6
10 9 8 7 6 5
6 1 2 3 4 7
1 2 3 3 2 1
3 2 1 1 2 3
0*/
資料立方體
總體介紹 首先模擬乙個資料分析場景,某企業積累了如下 所示的銷售資料 中每一行表示某個時間段內某種商品在某個地區的銷售情況。很明顯,這些資料涉及到了時間 地區 產品三個業務角度。在對這樣的資料進行分析時,不同的角色都會基於自己所感興趣的業務角度提出問題 銷售經理關心各個地區的銷售情況,希望找出銷售增...
建立立方體
imanualobject cube cube scenemgr.createmanualobject cube cube.begin examples anchor operationtype.ot list 頂點 cube.position 100,100,100 0 cube.position...
資料立方體 解密
資料立方體和傳統資料庫的差別在於資料立方體即cube把很多原來要用資料庫的group by操作來達到的效果通過其獨有的儲存形式予以加速,使用者可以方便地下鑽,切面 看到各種聚合的資料的結果。試想一下,如果乙個cube擁有3個維度,為了計算在各個維度上的聚合,就要進行2 3次計算,如果有10個維度就要...