AcWing 316. 减操作 线性dp
标签: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
评论