AcWing 316. 减操作 线性dp

2021-03-12 08:27

阅读:635

标签:int   return   10000+   状态   数字   判断   win   name   cout   

//f[i,cnt] 表示前i个数字和为cnt 
#include
#include
#include
#include
using namespace std;
const int N=110,M=200020;
int hh=10000;//hh是我们的下标偏移量 
int n,t,f[N][M],a[N],ans[N];
void solve()
{
    f[1][a[1]+hh]=1;//a[1]必然是正数
    f[2][a[1]-a[2]+hh]=-1;//a[2]必然是
    for(int i=3;i=2;i--)//回溯,确定+-号 
    {
        //判断第i个数字前的符号  
        ans[i]=f[i][s];
        //如果为1,那么就是+的 
        if(ans[i]==1)
            s-=a[i];
        else if(ans[i]==-1)
            s+=a[i];
    }
    //如果这一位为1,那么就说明在前一位进行cut操作
    //那么前一位前一位的前一位再进行时,就会变成+号 
    int cnt=0;
    for(int i=2;i>n>>t;
    for(int i=1;i>a[i];
    solve();
    return 0;
} 

AcWing 316. 减操作 线性dp

标签:int   return   10000+   状态   数字   判断   win   name   cout   

原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12604546.html


评论


亲,登录后才可以留言!