bzoj 1948 [Ceoi2006]Connect 插头dp

【LOJ2320】「清华集训 2017」生成树计数 【题目链接】点击打开链接【思路要点】由于场。时间复杂度\(O(DC^2+D^2+TD^2LogN)\),其中\(C=165,D=146\)。【代码】#include<bits/stdc++.h> using namespace std; const int MAXM = 65; const int MAXN = 262144; const int MAXLOG = 20; const ... 阅读详情

啊,就是插头dp啦。其实这道算是水一点的。。。
把障碍的行和列当成格子的边框。不过统计步数时注意跨过边框算一步。
维护一下轮廓线上有插头的位置。由于这道题随便两个都可以匹配所以根本不需要记插头的匹配。
f[i][j][k] 表示现在到点(i,j)轮廓线上状态为k的最小步数。然后逐格转移就好了。

#include <bits/stdc++.h>
using namespace std;
int dx[4]={0,-1,0,1};
int dy[4]={-1,0,1,0};
int n,m,inf,cnt;
char s1[31][110],s[110][31];
int f[2][26][(1<<13)+10],blo[110][31][4];
void upd(int &x,int y){x=min(x,y);}
int trs(int x,int y)
{
    x=(x>>2)<<1;x|=y&1;
    x|=((y&2)>>1)<<m;
    return x;
}
int main()
{
    //freopen("tt.in","r",stdin);
    scanf("%d%d",&n,&m);gets(s1[0]+1);
    for(int i=1;i<=n;i++)gets(s1[i]+1);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            s[j][i]=s1[i][j],cnt+=(s1[i][j]=='X');
    swap(n,m);
    for(int i=2;i<n;i+=2)
        for(int j=2;j<m;j+=2)
            for(int k=0;k<4;k++)
                blo[i>>1][j>>1][k]=(s[i+dy[k]][j+dx[k]]!=' ');
    n/=2;m/=2;
    memset(f[1],0x3f,sizeof(f[1]));
    inf=f[1][1][0];f[1][1][0]=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {   
            if(j==m)
                memset(f[~i&1],0x3f,sizeof(f[~i&1]));
            for(int k=0;k<1<<m+1;k++)
            {
                if(f[i&1][j][k]==inf)continue;
                int *nex;
                if(j==m)nex=f[~i&1][1];
                else nex=f[i&1][j+1];
                int v1=blo[i][j][2],v2=blo[i][j][3],val=f[i&1][j][k];
                if(s[i<<1][j<<1]=='X')
                {
                    if((k&3)==3)continue;
                    if((k&3)==0)
                    {
                        if(!v2)upd(nex[trs(k,1)],val+1);
                        if(!v1)upd(nex[trs(k,2)],val+1);
                    }
                    else upd(nex[trs(k,0)],val);
                }
                else
                {
                    if((k&3)==3)upd(nex[trs(k,0)],val+1);
                    else if((k&3)==0)
                    {
                        upd(nex[trs(k,0)],val);
                        if(!v1&&!v2)upd(nex[trs(k,3)],val+3);
                    }
                    else
                    {
                        if(!v2)upd(nex[trs(k,1)],val+2);
                        if(!v1)upd(nex[trs(k,2)],val+2);
                    }
                }
            }
        }
    printf("%d\n",f[(n+1)&1][1][0]+cnt/2);
    return 0;
}
Power Bi数据分析案例:在线零售平台销售数据分析 该数据集为,涵盖2023年1月至2024年3月,包含用户群体特征、购买行为、产品偏好以及参与度指标。用户维度:Customer_ID,Age,Gender,City产品维度:Product_Category,Unit_Price事实表:Order_ID,Quantity,Total_Amount,Discount_Amount,Rating,Delivery_Time在Power Query当中处理销售日期列,并新增年龄段、浏览页面分段列。 阅读详情

相关推荐

【最全】ISTQB- FL模拟题(含答案)

汇总收集的所有ISTQB基础级考题和答案

maoxuexue的博客 1万+

BZOJ 1192 [HNOI2006] 鬼谷子的钱袋 题解

1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1068  Solved: 778 [Submit][Status] Description 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)

初学者 1626

SQLSTATE58030

在优化一条SQL的时候遇到了执行错误 gtlions =# select t1.telnumber,t2.ua,t2.url,t1.apply_name,t2.apply_name from tb1 t1 gtlions -# left outer join tb2 t2 on t1.sid = t2.ipsid gtlions-# where t1.sum_date=20141128 a

Gtlions Tracker 3660

BZOJ 1948 CEOI 2006 Connect 状态压缩动态规划

BZOJ题面好像不全。 什么POI,CEOI吧。。还是去看原题比较好,比如 http://www.hsin.hr/ceoi2006/index.php?page=tasks http://www.hsin.hr/ceoi2006/tasks/day2/connect.pdf http://www.hsin.hr/ceoi2006/tasks/day2/connect_test.zip ht

とある黄鱼のOIブログ 907

MBD-从一个示例看代码生成过程(rtw文件、TLC语言)

大概介绍了MBD代码生成流程,rtw文件、TLC语言

小胡同学的工程师学习之路 4214

MATLAB2021b详细安装教程

1.下载 2.安装 下载安装包后打开iso文件,若是无法打开请用解压软件打开。 ①打开MATLAB_R2021b_win64,双击软件开始安装 ② 一直点击下一步,直到步骤③ ③选择我已有我的许可证的文件密钥,并输入62551-02011-26857-57509-64399-54230-13279-37181-62117-65158-40352-64197-45508-24369-45954-39446-39538-16936-10698-58393-44718-32560-10501-40

惜洛-Jankin的博客 9万+

bzoj2320: 最多重复子串

2320: 最多重复子串 Time Limit:40 SecMemory Limit:128 MBSubmit:246Solved:66[Submit][Status][Discuss] Description 一个字符串P的重复数定义为最大的整数R,使得P可以分为R段连续且相同的子串。比方说,“ababab”的重复数为3,“ababa”的重复数为1。 Y...

weixin_30879833的博客 210

微信小程序 - {errCode: 10008, errno: 1500104, errMsg: “writeBLECharacteristicValue:fail write characteris

微信小程序errCode: 10008, errno: 1500104, errMsg: "writeBLECharacteristicValue:fail write characteristics error. 10008, errMsg=The value's length is invalid.",uni-app微信小程序报错,uniApp小程序调用蓝牙api报错,向低功耗蓝牙设备的某个特征写入数据时错误,UniApp微信小程序蓝牙API调用报错10008解决方案,蓝牙设备进行通信时,向设备写入数据

🏆 前端领域优质创作者 4431

BZOJ4348 : [POI2016]Park wodny

首先特判全部都是A或者全部都是B或者$n=1$的情况。 然后把矩阵四周都填充上A,枚举一个块,分以下情况讨论: 1.在它四周选两个块扩展,此时平方暴力枚举即可。 2.在它四周选定一个方向扩展两步。 3.选择一个角落,斜着扩展一步,再扩展另一步。 时间复杂度$O(n^2)$。   #include&lt;cstdio&gt; #define rep(i,l,r) for(int ...

weixin_34380781的博客 138

Plecs电力电子仿真专业教程-第一季 第一节 Plecs简介

Plces 电力电子仿真专业教程系列依托专业的电力电子仿真软件Plecs对各种电力电子常用的拓扑及实际设计的方案进行系统及仿真与软件代码仿真实践。通过对各种电路仿真原理的讲解及专业C语言代码程序的编写,提升学员的系统设计能力,软件编程能力与理论分析能力。

3646

电商平台系统需求规格说明书(示例)

​​电商系统​​:指本文件所描述的集商品展示、销售、支付、物流跟踪、用户管理等功能于一体的综合性在线购物平台。​​API​​:应用程序编程接口(Application Programming Interface),用于实现系统各模块之间或与外部系统之间的数据交互和功能调用。

跟佟格湾一起学习计算机知识吧~ 1265

Connect(bzoj 1948)

Description 给定一个R*C大小的迷宫,其中R,C均为奇数 迷宫中坐标为两个奇数的点不能通过,称为障碍,迷宫中其他不能通过的点统称为墙壁 坐标为两个偶数的点可以通过,称为房间,迷宫中其他可通过的点称为走廊。迷宫有边界 迷宫中放置有若干个物品(偶数个),物品一定放置在房间中 问如何将这些物品配对可以使得所有物品对之间路径的总和最小,任两条路径不能相交,并求路径 Input 第一行输入...

weixin_30507481的博客 113

OpenHarmony 显示Display驱动全栈解析:DisplayLayer + Gralloc + Gfx 三位一体,打造高性能图形底座

OpenHarmony Display显示驱动模块是系统图形渲染和显示功能的基础组件,负责管理显示设备、图层渲染、内存分配等核心功能。该模块采用HDI(Hardware Driver Interface)设计架构,为上层图形服务提供统一的显示能力接口,实现了显示设备的初始化、图层管理、内存分配与映射、硬件加速等关键功能。DisplayLayer:负责显示图层的管理, 包括图层创建、显示属性设置、图层填充及刷新等操作;

m0_67505153的博客 316

BZOJ2310 ParkII 【插头DP】

题目描述: 给一个n*m的矩阵,n&amp;lt;=100, m&amp;lt;=8 每个点有权值,一条路径经过每个点最多一次,求路径权值的最大值 (路径可能只有一个点) 题目分析: 妥妥的插头DP了,不过这道题是求路径而不是环,需要一种叫做独立插头的东西。第一次打看别人动不动3000B+的代码真的是心态爆炸… 如果用括号表示法的话就新增一个3号插头,加上对应的操作: 当前没有插头,可以直接转移,可以新建一个(...

Master.Yi的博客 331

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【bzoj3125】CITY 插头dp

f[i][j][S]表示走到第i行第j列状态为S的方案数 0表示没有插头,1表示左括号,2表示右括号 好像插头dp都差不多是这样的? #include #include #include #include #include #include #define maxn 600010 using namespace std; int head[60010],to[maxn],n

Oxer的专栏 1160

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

BZOJ2310 parkii (插头DP)

题意:给一个矩阵,让找一条简单路径使路径和最小。N 如果矩阵全是正数的话枚举起点终点跑跑费用流就好了,省选的话一定会给这个部分分。 考虑用括号序列的插头DP,增加一个3号表示起点和终点那种插头。注意这个1表示左括号,2表示右括号,3表示其它这个是有讲究的,可以用xor来很方便地转化。 分类讨论比较繁琐,参考了一下claris的才完整地写出来。但是有些细节的处理上要注意和回路的区别。还有就是要

AZUI _ oi memories 995

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

bzoj 1949 [Ceoi2006]Walk dp 线段树

woc这题做得蛋疼。。。 一开始自己yy了一下,发现一个矩形到另一个矩形的转移一定是从一个的左上/左下角走到另一个的左上/左下角。如图: 然后设f[i][0/1]f[i][0/1] 表示原点到第i个矩形左上/左下角的最短路。 然后按左边界排序,从右往左扫一遍维护每个矩形的左上/左下角向右到达的第一个矩形。 然后再更新一下可以直接从原点走到的矩形的f值。 但问题是无法确定最后一个矩形的左

make_it_for_good的博客 660

[bzoj4348]ParkII【插头dp】

【题目链接】   https://www.lydsy.com/JudgeOnline/problem.php?id=2310 【题解】   插头dp中一道较为繁琐(?)的题。   多开一维状态记选了多少个度为1的点。同时在状态的括号序列中新添一种状态3表示单独的插头,接下来就是分类讨论了。细节有点多,但是思维难度不大,具体实现见代码。   时间...

dizhengyue1902的博客 181

【总结】插头DP-bzoj1210/2310/2331/2595

插头DP小结

远行客 482

插头DP学习小结

插头dp一般可以解决一类需要记录联通状态的题目(比如一个棋盘求满足某某条件的路径等)。定义插头一个格子如果与它正上方的格子联通,则有一个上插头,下左右亦然。轮廓线我们解决问题的时候,一般是外循环从上到下枚举,第二重循环从左到右枚举。那么当决策到(i,j)时,轮廓线就是(i,1)—(i,j-1)的下方,(i,j-1)的右方和(i-1,j)—(i-1,m)连接成长度m+1的线,在这里记录的状态是m个下插

WorldWide_D的博客 2673

[BZOJ]3125: CITY 插头DP

插头DP

TYB的博客 393

[BZOJ1435] [ZJOI2009] 多米诺骨牌 - 插头DP/状压DP,容斥原理

题意简述:求n*m的带障碍棋盘中,摆放1*2或2*1的多米诺骨牌且相邻行和相邻列均存在骨牌跨立的方案数。n,m  本蒟蒻的辣鸡题解 表示校内OJ有毒……n=m=15就完美地因为常数大了一倍而T掉了。。 所以有组特判不要在意……这里不应该写插头的应该写个状压,状态就能咔嚓掉一半。。 时间复杂度是大玄学 = = 真难调 弱智+2 #include"bits/stdc++.h" #define

whzzt的博客 2908

学习笔记:插头DP(BZOJ2331: [SCOI2011]地板)

膜了一波WXH天犇的代码,woc,惊为天人,代码还能这么写的!? 插头DP 插头DP的状压是要把整行的插头情况全部状压进去,所以说插头DP也是状压DP的一种(不要尝试不压缩) 插头DP大多逐格递推,当前格仅需要上一格递推,所以可以滚动。 插头DP是插在边上的插头,不是点上,因此有m个下插头以及一个右插头,注意空间。 插头DP的关键在于确定插头的种类(包括没有插头),很多时候会超过2种...

少主大人殿下的博客 430

【bzoj2310】ParkII 插头dp

带有独立插头的dp,状态用4进制数表示,掌握位运算技巧还是蛮好写的,虽然很慢。。。 #include #include #include #include #include #include #define maxn 100010 #define inf 1000000000 using namespace std; int n,m,now,pre,num,ans; int hash

Oxer的专栏 949

【BZOJ2320】最多重复子串 调和级数+hash

【BZOJ2320】最多重复子串 Description 一个字符串P的重复数定义为最大的整数R,使得P可以分为R段连续且相同的子串。比方说,“ababab”的重复数为3,“ababa”的重复数为1。 YourTask 对于给定的串S,找出S的一个子串K使得K的重复数最大。 Input 第一行T表示数据组数 对于每组数据,一行中一个仅包含小写字母的字符串S ...

aodanchui1057的博客 241

插头dp ——从入门到跳楼

课前预习 Q:什么题目使用插头dp? A:关键词:超小数据范围,网格图,连通性。 Q:什么是“插头”? A:一个格子通过某些方向与另一个格子相连,这些连接的位置叫做“插头”。形象地理解,网格图上每一个格子是一块拼图,那么两块拼图的接口就叫做“插头”。 Q:什么是“轮廓线”? A:我们在网格图中选择一个关键格子(图中黄色格子)(i,j)(i,j)(i,j),轮廓线就是蓝色的线。 ...

litble的成(tui)长(fei)史 2万+
上一篇: bzoj 1949 [Ceoi2006]Walk dp 线段树
下一篇: bzoj 2064 分裂 状压dp
make_it_for_good
博客等级 码龄11年 13粉丝 183原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值