是不是应该第100篇博文纪念一下?

题解:

本质简单题。。。但是我没仔细看这题。。。

观察它的两个式子,都是xor完再乘以某个数,意味着d数组的每个二进制位对答案的贡献都是独立的,可以每一位分开处理。

由于每一列只和相邻的列有连边,每一列的点只有和相邻列的点的关系会对答案有影响(语文不好,感性理解),因此从左到右递推的话只用存最后一列的结果就行了;

由于n很小,用状压DP记录当前扫描线上的数字状态,逐格暴力转移即可。

代码:

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define inf 1000000000000000
#define eps 1e-9
using namespace std;
typedef long long ll;
int N,n,m,a[][],b[][],e1[][],e2[][];
ll ans=,tmp,f[][];
int chk(int a,int b){
return (!b)?:(a>>(b-))&;
}
int main(){
scanf("%d%d",&n,&m);
N=<<n;
for(int i=;i<=n;i++)for(int j=;j<=m;j++)scanf("%d",&a[i][j]);
for(int i=;i<=n;i++)for(int j=;j<=m;j++)scanf("%d",&b[i][j]);
for(int i=;i<=n;i++)for(int j=;j<=m;j++)scanf("%d",&e1[i][j]);
for(int i=;i<=n;i++)for(int j=;j<=m;j++)scanf("%d",&e2[i][j]);
for(int t=;t<=;t++){
memset(f[],,sizeof(f[]));
for(int i=;i<=m;i++){
for(int j=;j<n;j++){
for(int k=;k<N;k++){
f[][k]=min(f[][k],f[][k^(<<j-)]+e1[j][i])+((chk(k,j)==chk(k,j-))?:e2[j-][i])+((chk(k,j)==chk(a[j][i],t+))?:b[j][i]);
}
memcpy(f[],f[],sizeof(f[]));
}
for(int k=;k<N;k++){
f[][k]=min(f[][k],f[][k^(<<n-)]+e1[n][i])+((chk(k,n)==chk(k,n-))?:e2[n-][i])+((chk(k,n)==chk(k,))?:e2[n][i])+((chk(k,n)==chk(a[n][i],t+))?:b[n][i]);
}
memcpy(f[],f[],sizeof(f[]));
}
tmp=inf;
for(int j=;j<N;j++){
tmp=min(tmp,f[][j]);
}
ans+=tmp*(<<t);
}
printf("%lld\n",ans);
return ;
}

(WC2018模拟十二)【FJOI2016集训Day7T3】Xor-Mul棋盘的更多相关文章

  1. (WC2018模拟十二)【FJOI2016集训Day7T1】挑选子序列

    题解: 这题太神仙了,先咕着,放个令人****的官方题解(精确覆盖问题是NP完全问题啊摔) Dancing Link X学习资料:QAQ TAT qwq Orz Donald Knuth大神... p ...

  2. (WC2018模拟十二)【FJOI2016集训Day7T2】点对游戏

    题解: 还好...看懂题目就好做了.(Orzdyh) 首先选择的点是等概率随机的,也就是说每种选择结果的概率都是一样的,所以选择一个点的时候已经选择的点不会有影响,那么就可以直接算出点对个数再求总体的 ...

  3. NOIp2018模拟赛四十二

    今天看标题终于回到了“NOIP模拟赛”,十分高兴啊! 然后一打开题目: ********** 所以今天又是一场NOIPlus模拟赛(微笑) 成绩:0+70+0=70 A题想了个贪心被myh两分钟cha ...

  4. 第十二章Fundamental Data Types 基本数据类型

    目录: 12.1 数值概论 12.2整数 12.3浮点数 12.4 字符和字符串 12.5布尔变量 12.6枚举类型 12.7具名常量 12.8数组 12.9创建你自己的类型 12.1   数值概论 ...

  5. 【腾讯Bugly干货分享】腾讯验证码的十二年

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581301b146dfb1456904df8d Dev Club 是一个交流移动 ...

  6. (十二) 一起学 Unix 环境高级编程 (APUE) 之 进程间通信(IPC)

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  7. 第十二篇 Integration Services:高级日志记录

    本篇文章是Integration Services系列的第十二篇,详细内容请参考原文. 简介在前一篇文章我们配置了SSIS内置日志记录,演示了简单和高级日志配置,保存并查看日志配置,生成自定义日志消息 ...

  8. Linux基础入门(新版)(实验九-实验十二)

    实验九 简单文本入门 一.常用的文本处理命令 二.文本处理命令 1.tr 命令 tr 命令可以用来删除一段文本信息中的某些文字.或者将其进行转换. 使用方式: tr [option]...SET1 [ ...

  9. 《Linux命令行与shell脚本编程大全》 第二十二章 学习笔记

    第二十二章:使用其他shell 什么是dash shell Debian的dash shell是ash shell的直系后代,ash shell是Unix系统上原来地Bourne shell的简化版本 ...

随机推荐

  1. 【AnjularJS系列前篇 】 适用场景

    AngularJS是一个 MV* 框架,最适于开发客户端的单页面应用.它不是个功能库,而是用来开发动态网页的框架. 它专注于扩展HTML的功能,提供动态数据绑定(data binding),而且它能跟 ...

  2. css控制单行或者多行文本超出显示省略号

    1.单行文本 使用text-overflow:ellipsis属性 text-overflow: clip|ellipsis|string; clip:修剪文本. ellipsis:显示省略符号来代表 ...

  3. Java web课程学习之JSP

    JSP     jsp隐式对象:JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. jsp脚本片段 l jsp脚本片段是指 ...

  4. [洛谷P3697]开心派对小火车

    题目:洛谷P3697 题目大意是有各站停列车(慢车,相邻2站时间A)和特急列车(相邻2站时间B),特急列车在特定站点停靠. 现在加一种快速列车(相邻2站时间C,A>C>B),停靠K站(包括 ...

  5. Windows 10快速在指定目录打开命令行

    一.我们在想要到达的目录上按住shift键并点击鼠标右键.看到了吗,这时候在弹出菜单里多了一个选项,就是"在此处打开命令窗口",我们点开看一下. 二.不过有时候我们需要以管理员的权 ...

  6. js中的变量提升和函数提升

    从上周开始,我所在的学习小组正式开始了angular的学习,angular是全面支持es6的,所以语法上和以前的angular有了很大的不同,比如变量声明时就抛弃了var,而选择了let和const: ...

  7. .net 参数修饰符

    参数修饰符的作用 参数修饰符 作用 无 如果一个参数没有用参数修饰符标记,则认为它将按值传递(pass by value),这意味着被调用的方法收到原始数据的一份副本 out 输出参数由被调用的方法赋 ...

  8. java数组简单逻辑代码

    package cuteSnow; public class HelloWorld { // 遍历数组里面的每个数字 public static void print(int[] array){ St ...

  9. angular-基础

    AngularJs特点: 1.依赖注入 2.模块化 3.双向绑定 4.语义化标签 当网页加载完毕,AngularJS 自动开启. ng-app 指令告诉 AngularJS,<div> 元 ...

  10. [Chromium]怎样安全的使用PostTask

    PostTask參数决策树 怎样传递绑定的对象 官方的解释总是最权威.有疑问看这里或者直接看代码中的说明: bind_helpers.h. 传值方式 描写叙述 this 或 对象指针 假设对象本身是一 ...