栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 3034 Whac

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 3034 Whac

#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define ll long long#define cls(a) memset(a,0,sizeof(a))#define rise(i,a,b) for(int i=a;i<=b;i++)#define fall(i,a,b) for(int i=a;i>=b;i--)int n, d, m, x, y, z, t, mole[20][40][40], dp[20][40][40], temp, stepj, stepk;int gcd(int a,int b)  {  return b==0?a:gcd(b,a%b);  } int main(){while( scanf( "%d %d %d" , &n , &d , &m ) ){if( !n && !d && !m ) break;cls( mole ); cls( dp ); t = 0;while( m -- ){scanf( "%d %d %d" , &x , &y , &z );mole[z][x+d][y+d] = 1;if( t < z ) t = z;}n += 2 * d;rise( i , 1 , t )for( x = 0 ; x < n ; x ++ )for( y = 0 ; y < n ; y ++ ){for( int j = 0 ; j < n ; j ++ )for( int k = 0 ; k < n ; k ++ ){temp = ( x - j ) * ( x - j ) + ( y - k ) * ( y - k );if( temp > d * d ) continue;if( temp == 0 ){dp[i][x][y] = max( dp[i][x][y] , dp[i-1][x][y] + mole[i][x][y] );continue;}temp = gcd( abs( j - x ) , abs( k - y ) );stepj = ( x - j ) / temp;stepk = ( y - k ) / temp;if( stepj == 0 && stepk == 0 ) temp = 0;else temp = mole[i][x][y];for( int nj = j , nk = k ; ( nj != x || nk != y ) ; nj += stepj , nk += stepk ){temp += mole[i][nj][nk];}dp[i][x][y] = max( dp[i][x][y] , dp[i-1][j][k] + temp );}}int ans = 0;for( int j = 0 ; j < n ; j ++ )for( int k = 0 ; k < n ; k ++ )if( ans < dp[t][j][k] ) ans = dp[t][j][k];cout << ans << endl;}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368530.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号