zoukankan      html  css  js  c++  java
  • P1052 过河

    P1052 过河

    题意:给个长度为1e9的桥,青蛙从0开始每次能跳[s,t]的距离,给m个石头在桥上,求青蛙最少踩几个石头。

    思路:因为m<100,l>1e9,所以可以对桥进行压缩,因为s,t属于[1,10],所以步数的最小公倍数是2520,如果两个石头时间距离大于2520,可以对石头之间的距离进行压缩,因为青蛙肯定会跳一个2520的距离。

    #include<bits/stdc++.h>
    using namespace std;
    
    int a[150];
    int book[2520*150];
    int f[2520*150];
    int d[105];
    int main()
    {
        int l,s,t,m;
        scanf("%d%d%d%d",&l,&s,&t,&m);
        for(int i=1; i<=m; i++)
            scanf("%d",&a[i]);
        sort(a+1,a+1+m);
        for(int i=1; i<=m; i++)
        {
            if((a[i]-a[i-1])>2520)
            {
                int temp=(a[i]-a[i-1])/2520;
                a[i]=a[i]-2520*temp;
            }
            book[a[i]]=1;
        }
        memset(f,0x3f,sizeof(f));
        f[0]=0;
        int len=a[m]+t;
        for(int i=1; i<=len; i++)
            for(int j=s; j<=t; j++)
                if(i-j>=0)
                    f[i]=min(f[i],f[i-j]+book[i]);
        int ans=0x3f3f3f3f;
        for(int i=len-t; i<=len; i++)
            ans=min(ans,f[i]);
        printf("%d",ans);
    }
  • 相关阅读:
    GDUFE ACM-1050
    hdu-2020
    hdu-2055
    hdu-2734
    GDUFE ACM-1145
    GDUFE ACM-1127
    GDUFE ACM-1126
    GDUFE ACM-1125
    GDUFE ACM-1124
    GDUFE ACM-1123
  • 原文地址:https://www.cnblogs.com/dongdong25800/p/11308835.html
Copyright © 2011-2022 走看看