保定网站设计,有做数学题的网站吗,机关单位网站管理部门应建立,莱芜搜狗推广哪家好思路{ 对于每一列#xff0c;小鸟或下落#xff0c;或上升。那我们很容易想到对应的背包问题#xff01; 按照完全背包的思想更新上升部分#xff0c;01背包的方法更新下降部分。 撞到柱子了(aluba。。。。。。aluba.。。。。。)不慌#xff0c;只需把它设为不可打即可小鸟或下落或上升。那我们很容易想到对应的背包问题 按照完全背包的思想更新上升部分01背包的方法更新下降部分。 撞到柱子了(aluba。。。。。。aluba.。。。。。)不慌只需把它设为不可打即可 处理出最后到达的的柱子乱搞即可。。。。。。 还是比较水的。。。。。。 } 1 #includemap2 #includeset3 #includelist4 #includedeque5 #includecmath6 #includequeue7 #includestack8 #includevector9 #includecstdio
10 #includecomplex
11 #includecstring
12 #includecstdlib
13 #includeiostream
14 #includealgorithm
15 #define maxx 10010
16 using namespace std;
17 struct ZHU{
18 int pos,h,l;
19 }a[maxx];
20 int flag,x[maxx],y[maxx];
21 int f[2][maxx],now,n,m,k,B;
22 bool comp(const ZHU A,const ZHU b){return A.posb.pos;}
23 int main(){
24 scanf(%d%d%d,n,m,k);
25 memset(f,127,sizeof(f));flagf[1][1];
26 for(int i1;in;i)scanf(%d%d,x[i],y[i]);
27 for(int i1;ik;i)
28 scanf(%d%d%d,a[i].pos,a[i].l,a[i].h),a[i].pos;
29 int nowp1;sort(a1,ak1,comp);
30 if(a[nowp].pos1)for(int ia[nowp].l1;ia[nowp].h;i)f[now][i]0,nowp2;//初始化
31 else for(int i1;im;i)f[now][i]0;
32 for(int i2;in1;i){
33 now^1;for(int j1;jm;j)f[now][j]flag;
34 for(int j1;jm-x[i-1];j)
35 f[now][jx[i-1]]min(f[now^1][j]1,f[now][jx[i-1]]),//由于滚动数组先01背包更新解
36 f[now][jx[i-1]]min(f[now][j]1,f[now][jx[i-1]]);//完全背包更新解
37 for(int jm-x[i-1]1;jm;j)
38 f[now][m]min(f[now^1][j]1,f[now][m]),
39 f[now][m]min(f[now][j]1,f[now][m]);//同上只是到顶了。。。。
40 for(int jm;jy[i-1];--j)
41 f[now][j-y[i-1]]min(f[now][j-y[i-1]],f[now^1][j]);//处理01背包下降的情况
42 if(a[nowp].posi){//判断柱子
43 for(int j1;jm;j)
44 if(ja[nowp].l)f[now][j]flag;
45 else if(ja[nowp].h)f[now][j]flag;
46 nowp;
47 }
48 for(int j1;jm;j)if(f[now][j]!flag)Bi;//取最优解
49 if(B!i)cout0 nowp-2,exit(0);
50 }int ansflag;
51 for(int i1;im;i)ansmin(ans,f[now][i]);
52 if(ans!flag)cout1 ans;
53 return 0;
54 } 转载于:https://www.cnblogs.com/zzmmm/p/7123861.html