欢迎来到《圣博凯斯》变频供水设备官网
精锐于专业 / 卓然于品质 -- 20年专注于供水行业,缔造至臻品质 -- 服务热线:0731-85783205 18932453205

dp插头内部图_DP插头

题意:给出矩阵,寻找简单路径使之与路径最小。 N=100,M=8。

如果队伍都是正数的话,列举起点、终点、运行成本的流程就可以了,但是节约的话一定会给这部分得分。

考虑括号排列的插头DP,添加3号表示起点和终点的插头。 请注意,此1是左括号,2是右括号,3是其他这个很有讲究,很容易用xor转换。

因为分类讨论很复杂,所以参考了claris的来完全写了。 但是,在细微的处理上必须注意与电路的不同。 还有就是注意括号的端点和插头3的变换。 我只觉得应该这么做,但其本质还不太理解。

# include iostream # include algorithm # include cstdio # include cstring # define rep (I,a,b ) for(intI=a; i=b; I ) #定义ERP (I,a,b ) for ) intI=a; i=b; -I ) #定义获取位(x,y ) ) (x ) ) (y ) ) (x ) ) ) (y ) ) )1) )定义获取位(x,y ) ) 652持续插入voidGmax(inta,int b ) { ab? a=b:0; (}int N,m,ans; int a[105][10]; 结构节点{ int s,nxt,val; (; 结构散列{ node e [ maxs ]; int adj[mo],ec; void init () memset ) adj,-1,sizeof adj ); ec=0; }voidpush(ints,int v ) {int ha=s%mo; for(intI=adj[ha]; ~i; I=e[I].nxt(if ) e[I].s==s ) returngmax ) e[I].val,v ); e[ec].val=v,e[ec].s=s; e[ec].nxt=adj[ha]; adj[ha]=ec; }} dp[2]; inlineintfindl(intST,int x ) {int cnt=1,s; ERP(I,x-1,0 ) s=) ST(I1 ) ) 3; if(s==2) cnt; ELSEif(s==1) cnt--; if (! cnt )返回I; }返回- 1; }inlineintfindr(intST,int x ) {int cnt=1,s; rep(I,x 1,m ) ) s=) ST(I1 ) ) 3; if(s==1) cnt; ELSEif(s==2) cnt--; if (! cnt )返回I; }返回- 1; }voidwork(intI,int j,int cur ) {dp[cur].init ); REP(k,0,dp[cur^1].ec-1 ) {int lass=dp[cur^1].e[k].s; if(lass=(1) m1 )1) ) ) continue; intl=获取位(lass,j-1 ); intu=getbit(lass,j ); ints=clrbit(lass,j-1,j ),w=a[i][j]; LL las=dp[cur^1].e[k].val; if (! l! u ) DP[cur].push(s,las ); DP[cur].push(s| bit(2(1,j-1 )|bit ) 2,j ),las w ); DP[cur].push(s|bit ) 3,j-1 ),las w ); DP[cur].push(s|bit ) 3,j ),las w ); }else if (! L ||! u () {int t=L U; DP[cur].push(s|bit ) t,j-1 ),las w ); DP[cur].push(s|bit(t,j ),las w ); if(t==3) if (! s ) gmax(ans,las w ); }else{if(l==1) DP[cur].push ) s^bit ) l,FindR(s ) s,j-1 ) ),las w ); if(l==2) DP[cur].push ) s^bit ) l,FindL(s ) s,j-1 ),las w ); if(u==1) DP[cur].push ) s^bit ) u,FindR(s ) s,j ),las w ); if(u==2) DP[cur].push ) s^bit ) u,FindL(s ) s,j ),las w ); }elseif(L==1u==1) DP[cur].push ) s^bit ) 3,FindR(s ) s,j ) ),las w ); ELSEif(L==2u==1) DP[cur].push(s,las w ); elseif(L==2u==2) DP[cur].push ) s^bit ) 3,findl(s,j-1 ) ),las w ); elseif(L==3u==3) ) if (! s ) gmax(ans,las w ); }elseif(L==3) if ) u==1) DP[cur].push ) s^bit ) u,FindR(s ) s,j ) ),las w ); elseDP[cur].push(s^bit(u,FindL(s ) s,j ) ),las w ); }elseif(u==3) if ) l==1) DP[cur].push ) s^bit ) l,FindR(s ) s,j-1 ) ),las w ); ELSEDP[cur].push(s^bit(l,FindL(s ) s,j-1 ),las w ); }}}int solve () {dp[0].init ),DP[0].push ),0 ); int cur=0; rep(I,1,n ) ) rep ) k,0,dp[cur].ec-1 ) dp[cur].e[k].s=2; REP(j,1,m ) {cur ^=1; 工作(I,j,cur ); } }返回Ans; (}int main ) ) Scanf('%d%d ),n,m ); REP(I,1,n ) rep ) j,1,m ) scanf('%d ',a[i][j] ),gmax ) ans,a[i][j]; printf(%d(n ),求解); 返回0; }

猜你喜欢

  • 西门子dp头接线_西门子dp插头型号

    简单易懂、从零开始的插头DP(一)正如前面写的那样,是从蒟蒻的视点整理总结的。更改了一些顺序,更改了一些细节。方便蒟蒻的学习理解)至少本339蒻是这样。结实的吐司可以直接看其他大人物的博客,学得更快。你必须学习的前知识:状态压缩DP虽然还不会学习,但是我推荐学习的前置知识。zrdxrk/p论文成功之前,建