(WC2018模拟十二)【FJOI2016集训Day7T3】Xor-Mul棋盘
是不是应该第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棋盘的更多相关文章
- (WC2018模拟十二)【FJOI2016集训Day7T1】挑选子序列
题解: 这题太神仙了,先咕着,放个令人****的官方题解(精确覆盖问题是NP完全问题啊摔) Dancing Link X学习资料:QAQ TAT qwq Orz Donald Knuth大神... p ...
- (WC2018模拟十二)【FJOI2016集训Day7T2】点对游戏
题解: 还好...看懂题目就好做了.(Orzdyh) 首先选择的点是等概率随机的,也就是说每种选择结果的概率都是一样的,所以选择一个点的时候已经选择的点不会有影响,那么就可以直接算出点对个数再求总体的 ...
- NOIp2018模拟赛四十二
今天看标题终于回到了“NOIP模拟赛”,十分高兴啊! 然后一打开题目: ********** 所以今天又是一场NOIPlus模拟赛(微笑) 成绩:0+70+0=70 A题想了个贪心被myh两分钟cha ...
- 第十二章Fundamental Data Types 基本数据类型
目录: 12.1 数值概论 12.2整数 12.3浮点数 12.4 字符和字符串 12.5布尔变量 12.6枚举类型 12.7具名常量 12.8数组 12.9创建你自己的类型 12.1 数值概论 ...
- 【腾讯Bugly干货分享】腾讯验证码的十二年
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581301b146dfb1456904df8d Dev Club 是一个交流移动 ...
- (十二) 一起学 Unix 环境高级编程 (APUE) 之 进程间通信(IPC)
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- 第十二篇 Integration Services:高级日志记录
本篇文章是Integration Services系列的第十二篇,详细内容请参考原文. 简介在前一篇文章我们配置了SSIS内置日志记录,演示了简单和高级日志配置,保存并查看日志配置,生成自定义日志消息 ...
- Linux基础入门(新版)(实验九-实验十二)
实验九 简单文本入门 一.常用的文本处理命令 二.文本处理命令 1.tr 命令 tr 命令可以用来删除一段文本信息中的某些文字.或者将其进行转换. 使用方式: tr [option]...SET1 [ ...
- 《Linux命令行与shell脚本编程大全》 第二十二章 学习笔记
第二十二章:使用其他shell 什么是dash shell Debian的dash shell是ash shell的直系后代,ash shell是Unix系统上原来地Bourne shell的简化版本 ...
随机推荐
- 十款APP开发框架
对于大部分Web开发人员,HTML.CSS和 Java是他们最熟练的开发技能.然而,开发一个原生的移动App,对他们来说却是完全陌生的领域.因为开发Android,iOS 或 Windows Phon ...
- jquery的animate能渐变background-color
在freecodecamp 上学习复习时,写了一个demo,引用了 jquery 实现 color 的渐变动画,然后运行测试的时候,发现其他功能都正常,就是无法是实现颜色的动画. 如: $('butt ...
- Spring、Spring MVC、MyBatis 整合文件配置详解
使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. Spring:http://spring.io/docs MyBatis ...
- create raid5
# umout 所有数据disk for i in {1..11};do umount /disk$i;done # 修改/etc/fstab,注释掉 /dev/sd[b-l] vim /etc/fs ...
- [置顶]
谷歌大牛 Jeff Dean 是如何成为互联网战神的
谷歌大牛 Jeff Dean 是如何成为互联网战神的 原文链接: Will Oremus 翻译: 伯乐在线- Lex Lian 译文链接: http://blog.jobbole.com/4772 ...
- WePy--使用zanUI组件
因为Wepy 中不能直接引入zanUI组件, 好在还有百度, 参考链接 https://github.com/brucx/wepy-zanui-demo (感谢); 我的做法是将 源码下了下来, 源码 ...
- 编写python代码获取4k高清壁纸
Huskiesir最近在研究python爬虫大约俩周了吧,由于比较懒,也没把具体研究的过程与经验写下来,实在是一大憾事.这次直接上干货,代码送给大家: import re import request ...
- 查看系统进程:ps、top
1.ps命令:提供最近进程的快照.显示当前活跃进程的简要信息. 常见使用: (1)与grep命令配合查找是否有相应进程存活 ps -ef | grep ksmd ps -Af | grep ksmd ...
- oracle数据库安装教程以及问题和解决方法
一,oracle数据库的下载和安装 1,在oracle官网上下载oracle安装包,运行setup.exe. 2,点击取消“我希望同构My Oracle Support接受安全更新”,以防后患. 3, ...
- 集成spring boot + mysql + docker实战
前言 网上找过很多文章,关于通过docker构建mysql容器并将应用容器和docker容器关联起来的文章不多.本文将给出具体的范例.此处为项目的源码 前置条件 该教程要求在宿主机上配置了: dock ...