當前位置:編程學習大全網 - 編程語言 - 殺螞蟻 編程題目

殺螞蟻 編程題目

//沒時間限制就不去做進壹步的優化了...這是按照我統計的規律寫的, 沒啥測試樣本, 所以也不敢說壹定對.

#include <stdio.h>

//#define DBG

typedef unsigned long U32;

typedef unsigned __int64 U64;

int n, r, g, b, T, G;

#ifdef DBG

char str[1025] = {0}, *p=str;

char res[1025] = {0};

#endif

U64 d, md;

void Crt2 ( int ii )

{

int i;

U64 dsave = d;

d += ( G + r ) * T * ii;

#ifdef DBG

for ( i = 0; i < ii; i++ ) *p++ = '2';

#endif

i = ii;

if ( md < d )

{

md = d;

#ifdef DBG

sprintf ( res, "%s", str );

#endif

}

d = dsave;

#ifdef DBG

while ( i-- > 0 ) *p-- = 0;

#endif

}

void Crt0 ( int ii )

{

U64 dsave = d;

int i = ii;

while ( i-- > 0 )

{

#ifdef DBG

*p++ = '0';

#endif

d += G * T;

T += b;

}

Crt2 ( n );

T -= ii * b;

#ifdef DBG

while ( ii-- > 0 )*p-- = 0;

#endif

d = dsave;

}

void Crt01 ( int ii )

{

U64 dsave = d;

int i;

ii >>= 1;

i = ii;

while ( i-- > 0 )

{

#ifdef DBG

*p++ = '0';

*p++ = '1';

#endif

d += G * T;

T += b;

d += G * T;

G += g;

}

for ( i = 0; i < n; i++ )

{

n -= i;

Crt0 ( i );

n += i;

}

T -= ii * b;

G -= ii * g;

d = dsave;

#ifdef DBG

while ( ii-- > 0 )

{

*p-- = 0;

*p-- = 0;

}

#endif

}

void Crt1 ( int ii )

{

U64 dsave = d;

int i = ii;

d = 0;

G = 0;

while ( i-- > 0 )

{

#ifdef DBG

*p++ = '1';

#endif

d += T * G;

G += g;

}

for ( i = 0; i < n; i += 2 )

{

n -= i;

Crt01 ( i ); // i==2

n += i;

}

#ifdef DBG

while ( ii-- > 0 )

{

*p-- = 0;

}

#endif

d = dsave;

}

int main ( void )

{

int i;

md = 0;

#ifdef DBG

n=245;r=4;g=3;b=2;T=1;

#else

scanf ( "%d%d%d%d%d", &n, &r, &g, &b, &T );

#endif

for ( i = n - 1; i >= 0; i-- )

{

n -= i;

Crt1 ( i );

n += i;

#ifdef DBG

puts ( res );

#endif

}

#ifdef DBG

puts ( res );

printf ( "%I64u\n", md );

system ( "pause" );

#else

printf ( "%I64u\n", md );

#endif

return 0;

}

  • 上一篇:河北省的壹些地區禁止種植小麥。這樣能緩解地下水位下降的情況嗎?
  • 下一篇:http 請求過程
  • copyright 2024編程學習大全網