Gambler Bo (高斯消元求特解)
对于图中的每一个点假设点击Xi * m + j 然后每个点都有那么对于每一个点可以列举出一个方程式,n*m个点解n*m个未知数。利用高斯消元就可以解决。
问题就在这个题目可能不止有一个特,所以我们需要求解的时特解。然后那一个求解的我看不懂。
#include <bits/stdc++.h>
using namespace std ; const int maxn = * ;
int n, m, cnt;
int id[][], data[][], a[maxn][maxn], x[maxn]; int gcd(int a, int b){
return b?gcd(b, a%b) : a;
} int lcm(int a, int b){
return a / gcd(a, b) * b;
} void init(){
memset(x, , sizeof(x));
memset(a, , sizeof(a));
for(int i = ; i <= n; i ++){
for(int j = ; j <= m; j ++){
a[id[i][j]][cnt] = ( - data[i][j])%;
a[id[i][j]][id[i][j]] = ;
if( i > ) a[id[i][j]][id[i - ][j]] = ;
if( j > ) a[id[i][j]][id[i][j - ]] = ;
if( i < n) a[id[i][j]][id[i + ][j]] = ;
if( j < m) a[id[i][j]][id[i][j + ]] = ;
}
}
} void gaussi(){
for(int i = ; i < cnt; i ++){
int top = i;
for(int j = i + ; j < cnt; j ++)
top = abs(a[j][i]) > abs(a[top][i]) ? j : top;
if(a[top][i]){
for(int j = i; j <= cnt; j ++)
swap(a[top][j], a[i][j]);
for(int j = i + ; j < cnt; j ++)
if(a[j][i]){
int d = lcm(a[j][i], a[i][i]);
int x1 = d/a[j][i], x2 = d/a[i][i];
for(int k = i; k <= cnt; k ++)
a[j][k] = ((a[j][k] * x1 - a[i][k] * x2)% + ) % ;
}
}
}
int ans = ;
for(int i = cnt - ; i > ; i --){
x[i] = a[i][cnt];
for(int j = i + ; j < cnt; j ++)
x[i] = ((x[i] - a[i][j] * x[j])% + )%;
x[i] = a[i][i] * x[i] % ;
ans += x[i];
}
printf("%d\n", ans);
for(int i = ; i < cnt; i ++){
while(x[i]){
printf("%d %d\n", (i - )/m + , (i - )%m + );
x[i] --;
}
} } int main () {
int T ;scanf("%d",&T);
while(T -- ){
cnt = ;
scanf("%d%d",&n,&m);
for(int i = ; i <= n; i ++)
for(int j = ; j <= m; j ++)
scanf("%d",&data[i][j]), id[i][j] = cnt++;
init();
gaussi();
}
return ;
}
Gambler Bo (高斯消元求特解)的更多相关文章
- 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 5755 Gambler Bo 高斯消元
题目链接 给n*m的方格, 每个格子有值{0, 1, 2}. 然后可以对格子进行操作, 如果选择了一个格子, 那么这个格子的值+2, 这个格子上下左右的格子+1, 并且模3. 问你将所有格子变成0的操 ...
- HDU4870_Rating_双号从零单排_高斯消元求期望
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4870 原题: Rating Time Limit: 10000/5000 MS (Java/Other ...
- HDU 5833 (2016大学生网络预选赛) Zhu and 772002(高斯消元求齐次方程的秩)
网络预选赛的题目……比赛的时候没有做上,确实是没啥思路,只知道肯定是整数分解,然后乘起来素数的幂肯定是偶数,然后就不知道该怎么办了… 最后题目要求输出方案数,首先根据题目应该能写出如下齐次方程(从别人 ...
- 【BZOJ2137】submultiple 高斯消元求伯努利数
[BZOJ2137]submultiple Description 设函数g(N)表示N的约数个数.现在给出一个数M,求出所有M的约数x的g(x)的K次方和. Input 第一行输入N,K.N表示M由 ...
- SPOJ HIGH(生成树计数,高斯消元求行列式)
HIGH - Highways no tags In some countries building highways takes a lot of time... Maybe that's bec ...
- 【bzoj2115】[Wc2011] Xor DFS树+高斯消元求线性基
题目描述 输入 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 Di的无向边. 图 ...
- 【bzoj3105】[cqoi2013]新Nim游戏 高斯消元求线性基
题目描述 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴.可以只拿一根,也可以拿走整堆火柴,但不能同时从 ...
- 【bzoj4004】[JLOI2015]装备购买 贪心+高斯消元求线性基
题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 (1 <= i <= n; 1 <= j < ...
随机推荐
- PLSQL分级取数据
分级取数据 select employee_id,last_name,job_id,manager_id from employees start with employee_id=101 --emp ...
- LeetCode 804 Unique Morse Code Words 解题报告
题目要求 International Morse Code defines a standard encoding where each letter is mapped to a series of ...
- django2.0内置分页
#导入分页器from django.core.paginator import Paginator 1视图逻辑 #读取数据库 res = Product.objects.all() #建立分页器对象 ...
- Servlet (三) 文件下载(只支持英文文件名)
package cn.sasa.serv; import java.io.FileInputStream; import java.io.IOException; import java.io.Inp ...
- SQL专家云监控
SQL专家云监控:http://www.zhuancloud.com/Index.html
- finecms同时调用子栏目和子栏目的文章怎么操作
之前ytkah写过dedecms如何调用当前栏目的子栏目及子栏目文章,那如果是finecms如何同时调用子栏目和子栏目的文章呢? {list action=category pid=0 id=31} ...
- PE破解win2008登录密码
1.使用PE系统启动计算机. 2.使用cmd命令行程序. 3.备份一下magnify.exe(windows 放大镜程序). copy C:\WINDOWS\system32\magnify.exe ...
- elemet-paging
<template> <card-layout :title="L('Prosuct')" :actions="actions" @click ...
- Nginx参数调优
(1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...
- DataFrame修改列名
把Dataframe格式的列名'class1'修改为'class_label' data.rename(columns={"label":"true_label" ...