bool is_planar(int v, int e)
{
if( 3 <= v )return e <= 3 * v - 6;
if( e == 0 )return true;
return e < (v - 1) * v;
}
class PlanarGraphShop {
public:
int bestCount(int N) {
const int inf = 1 << 24;
const int T = N + 1;
int t[T];
fill( t, t + T, inf );
t[0] = 0;
for(int i=0; i<N; ++i){
for(int v=1; i+v*v*v < T; ++v){
for(int e=0; i+v*v*v+e*e < T; ++e){
if( !is_planar(v, e) )continue;
int j = v * v * v + e * e + i;
t[j] = min( t[j], t[i] + 1 );
}
}
}
return t[N];
}
};
7/12/2011
SRM453.5 Div1 Medium
450
登録:
コメントの投稿
(
Atom
)
0 件のコメント :
コメントを投稿