(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的简化版本 ...
随机推荐
- ZBrush中如何清除遮罩
在之前的学习中我们知道在ZBrush®中如何创建遮罩,在创建遮罩时怎样进行反转来选择反选遮罩,本文将详细讲解ZBrush中如何清除遮罩,当我们利用遮罩达到预期效果时就需要将遮罩清除了:或者在做了遮罩的 ...
- IDEA里面的facets和artifacts的讲解
Facets: Facets表述了在Module中使用的各种各样的框架.技术和语言.这些Facets让Intellij IDEA知道怎么对待module内容,并保证与相应的框架和语言保持一致. 使用F ...
- 在Eclipse中使用Maven将项目(包括Maven引入的依赖jar文件)打成jar文件
1. 在项目的pom.xml文件中引入以下配置: <build> <plugins> <plugin> <artifactId>maven-assem ...
- luoguP4238 【模板】多项式求逆 NTT
Code: #include <bits/stdc++.h> #define N 1000010 #define mod 998244353 #define setIO(s) freope ...
- [HDU1195]Open the Lock
题目大意:给你一个4位数的初始状态(只包含1~9),要求你变化成另一个4位数. 变化规则为:每次可给任意一位加1或减1(1减1变为9,9加1变为1),或交换相邻两个数位上的数字(第一位和最后一位不相邻 ...
- Vue官网todoMVC示例
这个示例是模仿官网示例样式和功能用我自己的方式写的,基本上没有看官网的源码,只参考自定义指令.让我们一步步来探讨一下.官网demo 要实现的功能 单条添加todo 单条删除todo 双击编辑todo ...
- poj 2288 Islands and Bridges (状压dp+Tsp问题)
这道题千辛万苦啊! 这道题要涉及到当前点和前面两个点,那就设dp[state][i][j]为当前状态为state,当前点为i,前一个点为j 这个状态表示和之前做炮兵那题很像,就是涉及到三个点时,就多设 ...
- md5如何实现encodePassword加密方法
后台的加密代码:用户名:zhangsan 密码:123 /** * 编译密码,即加密 * @param user 用户信息 * @param password 密码 * @return 返回值为加 ...
- C#窗体间的跳转传值
1.开发平台VS2012 2.需求:从一个窗体跳转到另一个窗体,并传递参数,接收返回值. 3.案列如图: 4.代码如下: 登陆窗体: //当点击注册按钮 private void button2_Cl ...
- MyBatis学习总结(18)——MyBatis与Hibernate区别
也用了这么久的Hibernate和MyBatis了,一直打算做一个总结,就他们之间的优缺点说说我自己的理解: 首先,Hibernate是一个ORM的持久层框架,它使用对象和我们的数据库建立关系,在Hi ...