UVA

来源:互联网 发布:乐乎城市青年社区投诉 编辑:程序博客网 时间:2024/06/07 22:28

详见 HDU - 1160 FatMouse’s Speed

#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#include<string.h>#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))const int INF = 0x3f3f3f3f;const int NINF = -INF -1;const int MAXN = 10000+10;using namespace std;struct point {    int w, s, id;};point p[MAXN];int dp[MAXN], path[MAXN];int n, ans;bool cmp(point a, point b) {    if (a.w != b.w) return a.w < b.w;    return a.s > b.s;}void print_ans(int i, int cnt) {    if (cnt == dp[ans]) return;    print_ans(path[i], cnt+1);    printf("%d\n", p[i].id+1);}int main() {    n = 0;    while (scanf("%d%d", &p[n].w, &p[n].s) != EOF) {        n++;        p[n].id = n;    }    sort(p, p+n, cmp);    ans = 0;    for (int i = 0; i < n; i++) {        dp[i] = 1;        path[i] = i;        for (int j = 0; j < i; j++)            if (p[i].w > p[j].w && p[i].s < p[j].s && dp[i] < dp[j]+1) {                dp[i] = dp[j]+1;                path[i] = j;            }        if (dp[ans] < dp[i]) ans = i;    }    printf("%d\n", dp[ans]);    print_ans(ans, 0);    return 0;}
原创粉丝点击