bzoj1207

来源:互联网 发布:廖雪峰python教程视频 编辑:程序博客网 时间:2024/05/18 02:59

神奇的dp
竟然可以用最长上升子序列来做
但是不能二分优化。。。

#include<bits/stdc++.h>using namespace std;#define FOR(i,s,t) for(int i=(s);i<=(t);i++)inline int read(void) {    int x = 0, c, f = 1;    do {c=getchar(); if(c=='-') f = -1;} while(c<'0'||c>'9');    do {x = x*10+c-'0';c=getchar();}while(c>='0'&&c<='9');    return x * f;}const int N = 11000;int f[N], x[N], y[N], t[N], n, m, ans;int main() {    n = read(), m = read();    f[1] = 1;    t[1] = read(), x[1] = read(), y[1] = read();    for (int i = 2; i <= m; i++) {        t[i] = read(), x[i] = read(), y[i] = read();        f[i] = 1;        for (int j = i-1; j; j--) if(abs(x[i] - x[j]) + abs(y[i] - y[j]) <= t[i] - t[j])             f[i] = max(f[i], f[j] + 1);        ans = max(ans, f[i]);    }    cout << ans << endl;}
1 0
原创粉丝点击