P5074 Eat the Trees

博客介绍了插头DP在可形成多个回路问题中的应用。此问题左右括号无区别,用01表示即可。同时提醒注意if的嵌套关系,全零矩阵要输出1,还给出了代码的转载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路

同样是插头DP,但是这题因为可以形成多个回路,所以左右括号是没有区别的,只需要01就可以表示了
注意if的嵌套关系
注意全零矩阵也要输出1

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#define int long long
using namespace std;
const int HASHsize = 400000;
int mat[20][20],n,m,T,pos[40];
int cnt[2],now,last,ans,endx,endy,fir[HASHsize+10],nxt[HASHsize+10],val[2][HASHsize+10],times[2][HASHsize+10];
void init(void){
    memset(mat,0,sizeof(mat));
    memset(cnt,0,sizeof(cnt));
    now=0,last=0,ans=0,endx=0,endy=0;
    memset(fir,0,sizeof(fir));
    memset(nxt,0,sizeof(nxt));
    memset(val,0,sizeof(val));
    memset(times,0,sizeof(times));
}
void insert(int c,int num){
    int t=c%HASHsize;
    for(int i=fir[t];i;i=nxt[i]){
        if(val[now][i]==c){
            times[now][i]+=num;
            return;
        }
    }
    ++cnt[now];
    val[now][cnt[now]]=c;
    times[now][cnt[now]]=num;
    nxt[cnt[now]]=fir[t];
    fir[t]=cnt[now];
}
void print(int x){
    for(int i=0;i<m+1;i++)
        printf("%lld",(x>>i)&1);
    printf("\n");
}
void dp(void){
    now=0;
    insert(0,1);
    for(int i=1;i<=n;i++){
        for(int k=1;k<=cnt[now];k++)
            val[now][k]<<=1;
        for(int j=1;j<=m;j++){
            last=now;
            now^=1;
            cnt[now]=0;
            memset(fir,0,sizeof(fir));
            memset(nxt,0,sizeof(nxt));
            // printf("i=%lld j=%lld\n",i,j);
            for(int k=1;k<=cnt[last];k++){
                int state=val[last][k],num=times[last][k],plugL=(state>>(j-1))&1,plugU=(state>>(j))&1;
                // printf("num=%lld\n",num);
                // print(state);
                // printf("plugL=%lld plugU=%lld\n",plugL,plugU);
                if(mat[i][j]){
                    //新建连通分量
                    if((!plugL)&&(!plugU)){
                        if(mat[i+1][j]&&mat[i][j+1])
                            insert(state+(1<<(j-1))+(1<<(j)),num);
                    }
                    //合并联通分量
                    else if(plugL&&plugU){
                        if(i==endx&&j==endy)
                            ans+=num;
                        else
                            insert(state-(1<<(j-1))-(1<<(j)),num);
                    }
                    //延续联通分量
                    else{
                        if(plugL){
                            // printf("!\n");
                            if(mat[i+1][j])
                                insert(state,num);
                            if(mat[i][j+1])
                                insert(state-(1<<(j-1))+(1<<(j)),num);
                        }
                        if(plugU){
                            if(mat[i+1][j])
                                insert(state-(1<<(j))+(1<<(j-1)),num);
                            if(mat[i][j+1])
                                insert(state,num);
                        }
                    }
                }
                else{
                    if((!plugL)&&(!plugU))
                        insert(state,num);
                }
            }
        }
    }
}
signed main(){
    scanf("%lld",&T);
    pos[0]=1;
    for(int i=1;i<30;i++)
        pos[i]=pos[i-1]<<1;
    while(T--){
        bool isok=true;
        init();
        scanf("%lld %lld",&n,&m);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++){
                scanf("%lld",&mat[i][j]);
                if(mat[i][j]){
                    endx=i;endy=j;
                    isok=false;
                } 
            }
        // printf("endx=%lld endy=%lld\n",endx,endy);
        if(!isok){
            dp();
            printf("%lld\n",ans);
        }
        else{
            printf("1\n");
        }
    }
    return 0;
}

转载于:https://www.cnblogs.com/dreagonm/p/10839614.html

内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值