由于解集只为{0, 1, 2}故消元后需dfs枚举求解

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
#include<utility>
using namespace std;
typedef long long LL;
const int N = 60, INF = 0x3F3F3F3F; int a[N][N], mod;
int x[N];
int n, row;
int ans[N];
bool ok; int gauss(int a[][N], int n){
int i, j;
for(i = 0, j = 0; i < n && j < n; i++, j++){
int r = i;
for(int k = i; k < n; k++){
if(a[k][j]){
r = k;
break;
}
}
if(a[r][j] == 0){
i--;
continue;
}
if(r != i){
for(int k = 0; k <= n; k++){
swap(a[i][k], a[r][k]);
}
}
for(int k = i + 1; k < n; k++){
if(a[k][j]){
int x1 = a[i][j], x2 = a[k][j];
for(int l = j; l <= n; l++){
a[k][l] = (a[k][l] * x1 - x2 * a[i][l]) % mod;
}
}
}
}
return i;
} void dfs(int r){
if(r == -1){
ok = 1;
return;
}
if(ok){
return;
}
int x = 0;
while(x < n && a[r][x] == 0){
x++;
}
if(x == n){
if(a[r][n]){
return;
}
for(ans[x] = 0; ans[x] <= 2; ans[x]++){
dfs(r - 1);
}
return;
}
int tp = 0;
for(int j = x + 1; j < n; j++){
tp += a[r][j] * ans[j];
tp %= mod;
}
for(ans[x] = 0; ans[x] <= 2; ans[x]++){
if((ans[x] * a[r][x] + tp - a[r][n]) % mod == 0){
dfs(r - 1);
}
}
} int main(){
int t;
cin>>t;
while(t--){
cin >> mod >> n;
for(int i = 0; i < n; i++){
cin >> x[i];
}
for(int i = 0; i < n; i++){
a[i][n] = (i == 0);
for(int j = 0, k = i; j <= i; j++ , k--){
a[i][j] = x[k];
}
for(int j = i + 1, k = n -1; j < n; j++, k--){
a[i][j] = x[k];
}
}
row = gauss(a, n);
ok = 0;
dfs(n - 1);
if(ok){
printf("A solution can be found\n");
}else{
printf("No solution\n");
} } return 0;
}

  

POJ1288 Sly Number(高斯消元 dfs枚举)的更多相关文章

  1. Flip Game (高斯消元 || dfs)

    Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of its 16 square ...

  2. BZOJ1770:[USACO]lights 燈(高斯消元,DFS)

    Description 貝希和她的閨密們在她們的牛棚中玩遊戲.但是天不從人願,突然,牛棚的電源跳閘了,所有的燈都被關閉了.貝希是一個很膽小的女生,在伸手不見拇指的無盡的黑暗中,她感到驚恐,痛苦與絕望. ...

  3. POJ 1681 Painter's Problem 【高斯消元 二进制枚举】

    任意门:http://poj.org/problem?id=1681 Painter's Problem Time Limit: 1000MS   Memory Limit: 10000K Total ...

  4. [luoguP2962] [USACO09NOV]灯Lights(高斯消元 + dfs)

    传送门 先进行高斯消元 因为要求最少的开关次数,那么: 对于关键元,我们可以通过带入消元求出, 对于自由元,我们暴力枚举,进行dfs,因为只有开关两种状态,0或1 #include <cmath ...

  5. Codeforces 1163E 高斯消元 + dfs

    题意:给你一个集合,让你构造一个长度尽量长的排列,使得排列中任意相邻两个位置的数XOR后是集合中的数. 思路:我们考虑枚举i, 然后判断集合中所有小于1 << i的数是否可以构成一组异或空 ...

  6. bzoj 1770: [Usaco2009 Nov]lights 燈【高斯消元+dfs】

    参考:https://blog.csdn.net/qq_34564984/article/details/53843777 可能背了假的板子-- 对于每个灯建立方程:与它相邻的灯的开关次数的异或和为1 ...

  7. [POJ1753]Flip Game(异或方程组,高斯消元,枚举自由变量)

    题目链接:http://poj.org/problem?id=1753 题意:同上. 这回翻来翻去要考虑自由变元了,假设返回了自由变元数量,则需要枚举自由变元. /* ━━━━━┒ギリギリ♂ eye! ...

  8. [HIHO1196]高斯消元·二(高斯消元、枚举自由变元)

    题目链接:http://hihocoder.com/problemset/problem/1196 #include <bits/stdc++.h> using namespace std ...

  9. POJ 3185 The Water Bowls 【一维开关问题 高斯消元】

    任意门:http://poj.org/problem?id=3185 The Water Bowls Time Limit: 1000MS   Memory Limit: 65536K Total S ...

随机推荐

  1. Resharper的使用

    一:Reshaper是什么 即便是那些整天攻击 .NET 和 C# 的人,也常常不得不承认 Visual Studio 确实是个够强大的 IDE,除非他认为更少的 IDE 功能和命令行调试才是更强大的 ...

  2. oracle---jdbc--laobai

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...

  3. 发起post、get请求

    HttpURLConnection对象 /*** * 发起post请求,传输xml数据 * @param strUrl 请求地址 * @param xml 发送数据 * @return string ...

  4. 创建面注记PolygonElement

    1.根据4点创建一个面 /// <summary> /// 根据4个点创建图形,点序要顺时针 /// </summary> /// <param name="p ...

  5. javascript数据结构与算法--链表

    链表与数组的区别?  1. 定义: 数组又叫做顺序表,顺序表是在内存中开辟一段连续的空间来存储数据,数组可以处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小. ...

  6. Android中如何控制元素的显示隐藏?

    在Android程序中,有时需要程序开启时默认隐藏某个控件,当单击某个按钮时才触发显示控件的内容.比如在查询员工资料时,提交查询后再显示查询到的表格内容: Android中控制元素的隐藏参考以下代码. ...

  7. can't debug windows service in win7 64bit

    if encount below error: Solution: run the command “vsdiag_regwcf.exe -i” as admin in C:\Program File ...

  8. 02第一个OC程序

    一.打开XCode4.6.3,新建项目 二.选择Application下的命名行项目 三.输入项目名称,选择Foundation框架创建项目,点击Next 四.二话不说.点击Run.启动我们创建的项目 ...

  9. HTML页面meta标签内容详解

    所有的浏览器都支持meta标签,用于提供页面相关信息,信息都是以名(http-equiv和name标示)/值(content标示)对的形式现实. 属性content,用于定义http-equiv(定义 ...

  10. nginx实现请求转发

    反向代理适用于很多场合,负载均衡是最普遍的用法. nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理. nginx 反向代理官方文档: NGINX REVERSE PROXY 当在 ...