码迷,mamicode.com
首页 > 其他好文 > 详细

[USACO18FEB]Snow Boots S

时间:2018-09-18 22:52:16      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:com   code   pac   数据   mic   i++   注意   using   printf   

提供一种无脑DP做法

题目中大概有这么些东西:位置,穿鞋,跑路

数据小,那么暴力开数组暴力DP吧

设dp[i][j]表示穿着鞋子j,到达位置i是否可行

无脑转移

枚举位置,正在穿哪双鞋,换成哪双走出去,走几步

小的注意事项

1,穿这双鞋不能到这个地方就可以直接跳过,它不能用来转移

2,如果这只鞋不能满足在这个地方死不了,我们就不能穿这双鞋走出去

3,如果走这些步到达的地方,这双鞋不能承受,就不能转移

最后枚举最少穿几双走到n即可

#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=260;
int n,b,dp[maxn][maxn],f[maxn],s[maxn],d[maxn];
int main()
{
    scanf("%d%d",&n,&b);
    for(int i=1;i<=n;i++)
        scanf("%d",&f[i]);
    for(int i=1;i<=b;i++)
        scanf("%d%d",&s[i],&d[i]);
    dp[1][1]=1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=b;j++)
            if(dp[i][j])
                for(int k=j;k<=b;k++)
                    if(f[i]<=s[k])
                        for(int l=i+1;l<=min(n,i+d[k]);l++)
                            if(f[l]<=s[k])
                                dp[l][k]=1;
    for(int i=1;i<=b;i++)
        if(dp[n][i])
        {
            printf("%d\n",i-1);
            return 0;
        }
    return 0;
}

[USACO18FEB]Snow Boots S

标签:com   code   pac   数据   mic   i++   注意   using   printf   

原文地址:https://www.cnblogs.com/ivanovcraft/p/9671166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!