zoukankan      html  css  js  c++  java
  • hdu1160FatMouse's Speed(DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=1160

    1A 破题敲了一个多小时 最长上升子序列和最长下降子序列合起来 并把路径保留下来 题中是可以打乱顺序去找的 先按W上升或S下降排下序 再按最升和最降做

    View Code
     1 #include <iostream>
     2 #include<cstdio>
     3 #include<string.h>
     4 #include<algorithm>
     5 using namespace std;
     6 struct node
     7 {
     8     int w,s,xu;
     9 }q[1011];
    10 bool cmp(node a,node b)
    11 {
    12     return a.w<b.w;
    13 }
    14 int dp[1011],da[1011][1011];
    15 int main()
    16 {
    17     int i = 0,j,k,n,m,g,x;
    18     while(scanf("%d%d",&q[i].w,&q[i].s)!=EOF)
    19     {
    20         if(q[i].w==0)
    21         break;
    22         q[i].xu = i+1;
    23         i++;
    24     }
    25     sort(q,q+i,cmp);
    26     for(j = 0;  j <i ; j++)
    27         da[j][1] = q[j].xu;
    28     dp[0] = 1;
    29     x = 0;
    30     int max = 1;
    31     for(j = 1 ; j < i ; j++)
    32     {
    33         int tmax = 1;
    34         for(k = 0 ; k < j ; k++)
    35         if(q[k].w<q[j].w&&q[k].s>q[j].s&&dp[k]+1>tmax)
    36         {
    37             tmax = dp[k]+1;
    38             for(g = 1 ; g <= dp[k] ; g++)
    39             da[j][g] = da[k][g];
    40             da[j][tmax] = q[j].xu;
    41         }
    42         dp[j] = tmax;
    43         if(tmax>max)
    44         {
    45             max = tmax;
    46             x = j;
    47         }
    48     }
    49     printf("%d\n",max);
    50     for(i = 1 ; i <= max ; i++)
    51     printf("%d\n",da[x][i]);
    52     return 0;
    53 }
  • 相关阅读:
    html之marquee详解
    CSS盒模型
    基于windows API的手柄/键盘映射编程(一)
    阿超的烦恼来临的始端
    阿超的小目标
    程序员的800字作文
    Link to Coding
    项目经理都干些什么啊
    停不下来的英语课联想
    Markdown
  • 原文地址:https://www.cnblogs.com/shangyu/p/2672431.html
Copyright © 2011-2022 走看看