zoukankan      html  css  js  c++  java
  • 【2039】checker(Dp)

    我今天脑子貌似又好使了一点,可以做一做DP中的水题了。

    这个题难度蓝色,纯属是做的人太少了虚高。

    这个题很显然的是可以用一个顺序一个逆序这两个大水转移方程轻松转移出到达这个地方最少需要的棋子数量,然后因为n足够小,直接枚举每一个偶数坐标,对于可以由红色棋子走到的,就把总数++,不可以的,就把一开始要放得棋子++。。。

    然而交了好几遍,最后,最后三个点老是不对,我突然觉得是不是数据太大了,比较符号反了。。。。结果。。。R少打了一个0.。。。。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<queue>
    #define re register
    #define maxn 1000007
    #define ll long long
    using namespace std;
    ll f[20001],a[20001],d,n,m,ans,sum;
    int main()
    {
        cin>>n;
        memset(f,10,sizeof(f));
        cin>>d;
        for(re int i=2;i<=n;i++)
        {
            cin>>d;
            if(d)
            f[i]=1;
        }
        for(re int i=2;i<=n;i++)
        {
            f[i]=min(f[i],f[i-1]+f[i-2]);
        }
        for(re int i=n;i>=1;i--)
        {
            f[i]=min(f[i+1]+f[i+2],f[i]);
        }
        for(re int i=1;i<=n;i++)
        {
            if(i%2==0)
            {
                if(f[i]>1000000000000000)
                ans++;
                else
                sum+=f[i];
            }
        }
        cout<<ans<<endl<<sum;
    }
  • 相关阅读:
    python学习永久存储和异常处理
    python学习os文件系统模块
    python学习文件
    python学习集合
    python学习字典
    python学习递归
    python学习函数
    python学习序列
    js加入收藏
    判断dataset和datareader中是否存在某列
  • 原文地址:https://www.cnblogs.com/victorique/p/8427066.html
Copyright © 2011-2022 走看看