Connect(bzoj 1948)
Description
Input
Output
- /*
- 插头DP
- 这道题看了一晚上了,还是有很多地方不理解,Orz~
- */
- #include<cstdio>
- #include<iostream>
- #include<cstring>
- using namespace std;
- int n,m,inf,cnt;
- int f[][][(<<)+],blo[][][];
- char s1[][],s[][];
- int dx[]={,-,,};
- int dy[]={-,,,};
- void upd(int &x,int y){x=min(x,y);}
- int trs(int x,int y){
- x=(x>>)<<;x|=y&;
- x|=((y&)>>)<<m;
- return x;
- }
- int main(){
- scanf("%d%d",&n,&m);gets(s1[]+);
- for(int i=;i<=n;i++) gets(s1[i]+);
- for(int i=;i<=n;i++)
- for(int j=;j<=m;j++)
- s[j][i]=s1[i][j],cnt+=(s1[i][j]=='X');
- swap(n,m);
- for(int i=;i<n;i+=)
- for(int j=;j<m;j+=)
- for(int k=;k<;k++)
- blo[i>>][j>>][k]=(s[i+dy[k]][j+dx[k]]!=' ');
- n/=;m/=;
- memset(f[],0x3f,sizeof(f[]));
- inf=f[][][];f[][][]=;
- for(int i=;i<=n;i++)
- for(int j=;j<=m;j++){
- if(j==m)
- memset(f[~i&],0x3f,sizeof(f[~i&]));
- for(int k=;k<<<m+;k++){
- if(f[i&][j][k]==inf) continue;
- int *nex;
- if(j==m) nex=f[~i&][];
- else nex=f[i&][j+];
- int v1=blo[i][j][],v2=blo[i][j][],val=f[i&][j][k];
- if(s[i<<][j<<]=='X'){
- if((k&)==) continue;
- if((k&)==){
- if(!v2) upd(nex[trs(k,)],val+);
- if(!v1) upd(nex[trs(k,)],val+);
- }
- else upd(nex[trs(k,)],val);
- }
- else{
- if((k&)==) upd(nex[trs(k,)],val+);
- else if((k&)==){
- upd(nex[trs(k,)],val);
- if(!v1&&!v2) upd(nex[trs(k,)],val+);
- }
- else {
- if(!v2) upd(nex[trs(k,)],val+);
- if(!v1) upd(nex[trs(k,)],val+);
- }
- }
- }
- }
- printf("%d\n",f[(n+)&][][]+cnt/);
- return ;
- }
Connect(bzoj 1948)的更多相关文章
- BZOJ 1614 USACO 07Jan. 洛谷1948 电话线
二分+特殊姿势的check:二分最小代价P,把边权小于等于P的边设为0,其他的设为1,跑一遍最短路,判断dis[n]是否大于K #include<cstdio> #include<a ...
- 【BZOJ】【2049】【SDOI2008】洞穴勘测 Cave
LCT 哦……LCT的一道更水的裸题,适合学习access,link,cut等基本操作(其实这三个不是在一个层面上的?不要在意这些细节……) /**************************** ...
- BZOJ 2002 && BZOJ 2409 LCT && BZOJ 3282 初步练习
#include <cstdio> ; inline void Get_Int(int & x) { ; ') ch=getchar(); +ch-'; ch=getchar(); ...
- 【BZOJ】2049: [Sdoi2008]Cave 洞穴勘测(lct/并查集)
http://www.lydsy.com/JudgeOnline/problem.php?id=2049 bzoj挂了..在wikioi提交,,1A-写lct的速度越来越快了-都不用debug-- 新 ...
- 【BZOJ】【4034】【HAOI2015】T2
树链剖分/dfs序 树上单点修改+子树修改+链查询 其实用dfs序做也可以…… 其实树链剖分就是一个特殊的dfs序嘛= =所以树链剖分也可以搞子树-(Orz ZYF) 至于为什么……你看在做剖分的时候 ...
- 【BZOJ】【1036】树的统计
嗯这题是一道对树进行动态修改&查询的经典题目,可以拿来练习树链剖分~ 啊对于这种动态修改&查询的题目,我们最喜闻乐见的就是在一个序列上去做了,毕竟可以直接套各种数据结构模版啊,比如线段 ...
- 【BZOJ】【2588】COT(Count On a Tree)
可持久化线段树 maya……树么……转化成序列……所以就写了个树链剖分……然后每个点保存的是从它到根的可持久化线段树. 然后就像序列一样查询……注意是多个左端点和多个右端点,处理方法类似BZOJ 19 ...
- 【BZOJ】【2819】NIM
这题……咋说捏,其实是一道披着博弈论外衣的树上操作问题…… 随便用dfs序或者树链剖分转成序列,然后查询路径上的所有点的NIM和(异或和)就行了,毕竟除了是在树上以外,就是裸的NIM问题. 树链剖分: ...
- BZOJ 3563 DZY Loves Chinese
Description 神校XJ之学霸兮,Dzy皇考曰JC. 摄提贞于孟陬兮,惟庚寅Dzy以降. 纷Dzy既有此内美兮,又重之以修能. 遂降临于OI界,欲以神力而凌♂辱众生. 今Dzy有一魞歄图,其上 ...
随机推荐
- Java发出声卡蜂鸣生的方法
方法一: Toolkit.getDefaultToolkit().beep(); 方法二: System.out.println('\007');//八进制数
- JSP出现"属性值[request.getParameter("myMessage")]引用["],在值内使用时必须被转义"的解决方法
写JSP时出现属性值[request.getParameter("myMessage")]引用["],在值内使用时必须被转义. 源代码: <jsp:setPrope ...
- abs的个人博客 http://abs001.top/blog
abs的个人博客 abs的个人博客 abs的个人博客 abs的个人博客 abs的个人博客 abs的个人博客 abs的个人博客 abs的个人博客 abs的个人博客 abs的个人博客 abs的个人博客 a ...
- mysql--连接查询(内外连接)
连接查询又称多表查询,查询到的字段来自于多个表中的数据. 一. 连接查询的分类和语法 1.分类 按标准分: 92标准:只支持内连接 99标准:支持内连接和.外连接和全外连接 功能进行分类: 内连接:i ...
- 神经网络系列学习笔记(二)——神经网络之DNN学习笔记
一.单层感知机(perceptron) 拥有输入层.输出层和一个隐含层.输入的特征向量通过隐含层变换到达输出层,在输出层得到分类结果: 缺点:无法模拟稍复杂一些的函数(例如简单的异或计算). 解决办法 ...
- 前段ztree 树状插件
效果展示
- Spark架构与作业执行流程简介(scala版)
在讲spark之前,不得不详细介绍一下RDD(Resilient Distributed Dataset),打开RDD的源码,一开始的介绍如此: 字面意思就是弹性分布式数据集,是spark中最基本的数 ...
- 传送流(TS)的基础知识
数字电视的TS包和TS流的组成和功能 综合考虑几下几个因素: (1)包的长度不能过短,否则包头开销所占比例过大, 导致传输效率下降 (2)包的长度不能过长,否则在丢失同步的情况下恢复同步的 周期过长, ...
- HDU:2222-Keywords Search(AC自动机模板,匹配模拟)
Keywords Search Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) P ...
- Mysql密码加密方式
以Mysql 4.1版本为分界线,两种加密方式 Mysql323加密:(16位) select old_password('root'); //Mysql自带加密函数old_password(str ...