zoukankan      html  css  js  c++  java
  • hdu 2881 Jack's struggle(DP)

    对于所有的任务所在的地点按照时间排序,可以将其看成是一道非常简单的“天上掉馅饼”的题的二维版本。

    将这些任务看成从天而降的馅饼,统计有哪些之前馅饼掉落的位置可以在两者时间差内到达该点的点,取其最大值。

    这道题的数据很邪门,题目没有给出任何提示,但是用C++提交的话会超时,用G++提交的话3000+ms可以A掉,查了1700ms。我看提交的代码都是G++。这不合适吧?

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<cmath>
    #define N 10005
    struct node
    {
    	int x,y;
    	int t;
    }a[N];
    int dp[N];
    int cmp(const void *a,const void *b)
    {
    	return (*(node *)a).t-(*(node *)b).t;
    }
    int Max(int x,int y)
    {
    	if(x>y)
    		return x;
    	return y;
    }
    int main()
    {
    	int n,m;
    	while(scanf("%d%d",&m,&n),m||n)
    	{
    		int i,j;
    		for(i=1;i<=n;i++)
    			scanf("%d%d%d",&a[i].t,&a[i].x,&a[i].y);
    		qsort(a+1,n,sizeof(a[0]),cmp);
    		memset(dp,0,sizeof(dp));
    		for(i=1;i<=n;i++)
    		{
    			dp[i]=1;
    			for(j=1;j<i;j++)
    			{
    				if(abs(a[j].x-a[i].x)+abs(a[j].y-a[i].y)<=a[i].t-a[j].t)
    					dp[i]=Max(dp[i],dp[j]+1);
    			}
    		}
    		int max=0;
    		for(i=1;i<=n;i++)
    			max=Max(max,dp[i]);
    		printf("%d
    ",max);
    	}
    	return 0;
    }


  • 相关阅读:
    css+js实现的一个导航栏
    各类插件的网页库
    vue构建项目全过程
    手把手教你使用Git
    创建git库
    VUE.JS的安装
    reset.css 初始化
    分布式事务方案
    线程池的参数
    每秒上千订单场景下,如何对分布式锁的并发能力进行优化
  • 原文地址:https://www.cnblogs.com/riskyer/p/3223813.html
Copyright © 2011-2022 走看看