Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
实在找不着哪错了,路过的朋友帮看看按时间DP 统计线段上老鼠数量的时候用gcd... #include <iostream> #include <vector> #include <stdio.h> #include <string.h> #define INF 99999999 using namespace std; typedef pair<int, int> mypair; int n,d,m,max_t; vector< mypair > M[11]; int sz[11]; int dp[11][36][36]; int map[11][36][36]; bool in_range(int &x, int &y, int &a, int &b){ if((x-a)*(x-a)+(y-b)*(y-b) <=d*d){ return true; } return false; } int gcd(int a,int b){ if(b==0)return a; return gcd(b,a%b); } int get_mole_number(int t, int x,int y, int i, int j){ if(x==i&&y==j){ if(map[t][x][y]!=0){ return 1; }else{ return 0; } } int xm, ym; int g = gcd(abs(x-i),abs(y-j)); if(x<i){ xm = abs(x-i)/g; }else{ xm = -abs(x-i)/g; } if(y<j){ ym = abs(y-j)/g; }else{ ym = -abs(y-j)/g; } int sum=0,tx,ty; for(int k=0; k<=g; k++){ tx = x+xm*k; ty = y+ym*k; if(map[t][tx][ty]!=0){ sum++; } } return sum; } int get_ans(int t, int x, int y){ if(t==0){ return 0; } if(dp[t][x][y]!=-1)return dp[t][x][y]; int tmp_max = -INF; for(int i=x-d; i<=x+d; i++){ for(int j=y-d; j<=y+d; j++){ if(i<0 || i>=n || j<0 || j>=n)continue; if(!in_range(x,y,i,j)){ continue; } int sum=0; sum = get_mole_number(t, x , y , i, j); int t_ans = get_ans(t-1, i, j); tmp_max = max(tmp_max, sum+t_ans); } } dp[t][x][y] = tmp_max; return tmp_max; } void work(){ memset(dp,-1,sizeof(dp)); int ans = -INF; for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ ans = max(ans, get_ans(max_t,i,j)); } } cout<<ans<<endl; } int main(){ while(scanf("%d %d %d",&n,&d,&m)!=EOF){ if(n==d && d==m && m==0){ break; } int x,y,t; for(int i=0; i<11; i++)M[i].clear(); memset(map,0,sizeof(map)); for(int i=0; i<m; i++){ scanf("%d %d %d",&x,&y,&t); x+=15, y+=15; M[t].push_back(mypair(x,y)); max_t = max(max_t, t); map[t][x][y]=1; } n+=15; for(int i=1; i<=max_t; i++)sz[i] = M[i].size(); work(); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator