看似n^2暴力 其实第二个循环是1~n递增的 而且常熟极小 就跑过了
/************************************************************** Problem: 1207 User: lxy8584099 Language: C++ Result: Accepted Time:2632 ms Memory:984 kb ****************************************************************/ /* f i 表示前i只 的最优情况 */ #include<cstdio> using namespace std; const int N=10500; int n,f[N],x[N],y[N],t[N],ans; void cmax(int&a,int b) {if(a<b) a=b;} int abs(int x){return x>0?x:-x;} int main() { scanf("%*d%d",&n); for(int i=1;i<=n;i++) scanf("%d%d%d",&t[i],&x[i],&y[i]); f[1]=1; for(int i=2;i<=n;i++) { f[i]=1; for(int j=1;j<i;j++) if(abs(x[i]-x[j])+abs(y[i]-y[j])<=t[i]-t[j]) cmax(f[i],f[j]+1); cmax(ans,f[i]); } printf("%d\n",ans); return 0; }

京公网安备 11010502036488号