HDU - 5755:Gambler Bo (开关问题,%3意义下的高斯消元)
pro:给定N*M的矩阵,每次操作一个位置,它会增加2,周围4个位置会增加1。给定初始状态,求一种方案,使得最后的数都为0;(%3意义下。
sol:(N*M)^3的复杂度的居然过了。 好像标程是M^3的,因为第一排确定了,后面的都确定了。所以我们只要设关于第一排的方程,那么跑下来,第N+1排的都为0,则合法。
(此题由于3的特殊性,x关于3的逆元=x;所以不用求逆元
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int a[maxn][maxn],ans[maxn];
int x[]={,,,-};
int y[]={,-,,};
void Guass(int N)
{
rep(i,,N-){
int t=i;
rep(j,i+,N-) if(a[j][i]>a[t][i]) t=j;
if(i!=t) rep(j,i,N) swap(a[i][j],a[t][j]);
if(!a[i][i]) continue;
rep(j,i+,N-){
if(!a[j][i]) continue;
int t1=a[i][i],t2=a[j][i];//保留,不能直接带进去
rep(k,i,N)
a[j][k]=((a[j][k]*t1-a[i][k]*t2)%+)%;
}
}
for(int i=N-;i>=;i--){
a[i][N]=a[i][N]*a[i][i]%;
rep(j,,i-)
a[j][N]=((a[j][N]-a[i][N]*a[j][i])%+)%;
}
}
int main()
{
int T,N,M,S,t,p;
scanf("%d",&T);
while(T--){
scanf("%d%d",&N,&M); S=N*M;
rep(i,,S) rep(j,,S) a[i][j]=;
rep(i,,N-) rep(j,,M-){
t=i*M+j;
scanf("%d",&a[t][S]);
a[t][S]=-a[t][S];
}
rep(i,,S-) a[i][i]=;
rep(i,,N-)
rep(j,,M-){
t=i*M+j;
rep(k,,) {
if(i+x[k]>=&&i+x[k]<N&&j+y[k]>=&&j+y[k]<M){
a[(i+x[k])*M+j+y[k]][t]=;
}
}
}
Guass(S);
int res=;
rep(i,,S-) res+=a[i][S];
printf("%d\n",res);
rep(i,,S-){
p=i/M+; t=i%M+;
if(a[i][S]) printf("%d %d\n",p,t);
if(a[i][S]==) printf("%d %d\n",p,t);
}
}
return ;
}
HDU - 5755:Gambler Bo (开关问题,%3意义下的高斯消元)的更多相关文章
- HDU 5755 Gambler Bo(高斯消元)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5755 [题目大意] 一个n*m由0,1,2组成的矩阵,每次操作可以选取一个方格,使得它加上2之后对 ...
- hdu 5755 Gambler Bo (高斯消元法解同余方程组)
http://acm.hdu.edu.cn/showproblem.php?pid=5755 题意: n*m矩阵,每个格有数字0/1/2 每选择一个格子,这个格子+2,4方向相邻格子+1 如何选择格子 ...
- hdu 5755 Gambler Bo 高斯消元
题目链接 给n*m的方格, 每个格子有值{0, 1, 2}. 然后可以对格子进行操作, 如果选择了一个格子, 那么这个格子的值+2, 这个格子上下左右的格子+1, 并且模3. 问你将所有格子变成0的操 ...
- HDU 5755 Gambler Bo
可以设n*m个未知量,建立n*m个方程.位置i,j可以建立方程 (2*x[i*m+j]+x[(i-1)*m+j]+x[(i+1)*m+j]+x[i*m+j-1]+x[i*m+j+1])%3=3-b[i ...
- 【HDU 5833】Zhu and 772002(异或方程组高斯消元)
300个最大质因数小于2000的数,选若干个它们的乘积为完全平方数有多少种方案. 合法方案的每个数的质因数的个数的奇偶值异或起来为0. 比如12=2^2*3,对应的奇偶值为01(2的个数是偶数为0,3 ...
- 【HDU 5833】Zhu and 772002(异或方程组高斯消元讲解)
题目大意:给出n个数字a[],将a[]分解为质因子(保证分解所得的质因子不大于2000),任选一个或多个质因子,使其乘积为完全平方数.求其方法数. 学长学姐们比赛时做的,当时我一脸懵逼的不会搞……所以 ...
- POJ - 1222: EXTENDED LIGHTS OUT (开关问题-高斯消元)
pro:给定5*6的灯的状态,如果我们按下一个灯的开关,它和周围4个都会改变状态.求一种合法状态,使得终状态全为关闭: sol:模2意义下的高斯消元. 终于自己手打了一个初级板子. #include& ...
- hdu 5755 2016 Multi-University Training Contest 3 Gambler Bo 高斯消元模3同余方程
http://acm.hdu.edu.cn/showproblem.php?pid=5755 题意:一个N*M的矩阵,改变一个格子,本身+2,四周+1.同时mod 3;问操作多少次,矩阵变为全0.输出 ...
- HDU 4870 Rating(高斯消元 )
HDU 4870 Rating 这是前几天多校的题目,高了好久突然听旁边的大神推出来说是可以用高斯消元,一直喊着赶快敲模板,对于从来没有接触过高斯消元的我来说根本就是一头雾水,无赖之下这几天做DP ...
随机推荐
- --save-dev --save 的区别
--save 是发布会还在使用 --save-dev 是在开发中需要用到的 --save 依赖的文件在denpendencis下 --save-dev 依赖的文件都在dvedependencis下
- 面试北京XX科技总结
1 面试时间与地点 面试时间:2019年1月17号,面试地点:北京. 2 公司概况 开发的产品是集团内部使用,开发的语言ts脚本语言.目前开发团队15人 ...
- Excel文件数据导入到后台保存倒数据库
后台代码数据解析: 方法一: (简单点) import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermo ...
- vue 的全局组件和 局部组件
vue组件局部与全局注册的区别 //局部注册 var mycomponent = new extend({ <!--Vue.extend()是Vue构造器的扩展,调用Vue.e ...
- C#或unity中实现正弦函数
C#或unity中实现正弦函数 本类用于第一,需要绘制一条正弦曲线的朋友:第二,需要根据正弦曲线控制物体运动的朋友:里面都有注释,代码如下: unity中使用的代码: public class Cur ...
- What to do when you have small dataset - 拥有小型数据集时该怎么办
I'm trying to train a classifier with neural network, but I've got too small datasets. Each class ha ...
- Python-接口自动化(五)
python基础知识(五) (六)类与对象 类:某一类具有共同属性和特性的事物或者说是一个抽象的描述,比如说大佬类,你就是大佬类里面具体的一个实例.类一般包含属性和方法 (1)类的语法: class ...
- vue-cli axios跨域 + 反向代理模拟http请求host+referer
axios跨域 配置config->index.js中的proxyTable,内容如下: proxyTable: { // 跨域请求 '/api': { // 注意此处可设置为 '*' 代表不限 ...
- python之路-变量
变量定义的规则: - 变量名只能是字母.数字.或下划线的任意组合 - 变量名的第一个字符不能是数字 - 以下关键字不能声明为变量名 ['and','as','assert','break','cla ...
- spring boot读取classpath下的json文件
import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resour ...