当前位置: 首页 > 编程日记 > 正文

poj 1681 Painter#39;s Problem(高斯消元)

http://poj.org/problem?

id=1681


求最少经过的步数使得输入的矩阵全变为y。


思路:高斯消元求出自由变元。然后枚举自由变元,求出最优值。

注意依据自由变元求其它解及求最优值的方法。


#include <stdio.h>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <math.h>
#include <string.h>
#define LL long long
#define _LL __int64using namespace std;
const int INF = 0x3f3f3f3f;char mapp[17][17];
int a[16*16][16*16];
int equ,var;
int x[16*16];
int free_x[16*16]; //保存自由变元,枚举求最优解
int free_num;void init()
{memset(a,0,sizeof(a));memset(x,0,sizeof(x));
}void debug()
{for(int i = 0; i < equ; i++){for(int j = 0; j < var+1; j++)printf("%d",a[i][j]);printf("\n");}
}int Gauss()
{int row,col,i,j;int max_r;row = col = 0;free_num = 0;while(row < equ && col < var){max_r = row;for(i = row+1; i < equ; i++){if( abs(a[i][col]) > abs(a[max_r][col]) )max_r = i;}if(max_r != row){for(j = col; j < var+1; j++)swap(a[max_r][j],a[row][j]);}if(a[row][col] == 0){free_x[ free_num++ ] = col; //该列相应的变量是自由元col++;continue;}for(i = row+1; i < equ; i++){if(a[i][col] == 0) continue;for(j = col; j < var+1; j++)a[i][j] ^= a[row][j];}row++;col++;}for(i = row; i < equ; i++)if(a[i][col] != 0)return -1; //无解if(row < var)return var-row; //返回自由变元的数目for(i = var-1; i >= 0; i--) //有唯一解{x[i] = a[i][var];for(j = i+1; j < var; j++)x[i] ^= (a[i][j] && x[j]);}return 0;
}void solve()
{int t = Gauss();if(t == -1){printf("inf\n");return;}else if(t == 0){int ans = 0;for(int i = 0; i < var; i++)ans += x[i];printf("%d\n",ans);return;}else{int ans = INF;int sta = (1<<t); //t个变量共同拥有sta个基础解int cnt;for(int i = 0; i < sta; i++){cnt = 0;//先给自由变元赋值for(int j = 0; j < t; j++){if((1<<j) & i){x[ free_x[j] ] = 1;cnt++;}elsex[ free_x[j] ] = 0;}//求出其它的解for(int j = var-t-1; j >= 0; j--){int l,k;for(k = j; k < var; k++)if(a[j][k])break; //先找到该行第一个不为0的数x[k] = a[j][var];for(l = k+1; l < var; l++)x[k] ^= (x[l] && a[j][l]);cnt += x[k];}ans = min(ans,cnt);}printf("%d\n",ans);return;}
}int main()
{int n,test;scanf("%d",&test);while(test--){init();scanf("%d",&n);equ = var = n*n;for(int i = 0; i < n; i++)scanf("%s",mapp[i]);for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){if(mapp[i][j] == 'w')a[i*n+j][var] = 1;else a[i*n+j][var] = 0;}}for(int i = 0; i < equ; i++){int x = i/n;int y = i%n;for(int j = 0; j < var; j++){int xx = j/n;int yy = j%n;if( abs(x-xx) + abs(y-yy) <= 1)a[i][j] = 1;else a[i][j] = 0;}}solve();}return 0;
}





相关文章:

ASP.NET 2.0中GRIDVIEW排序

在 headertemplate中加一张UP.GIF和DOWN.GIF(就是升序&#xff0c;倒序的示意图&#xff09; % Page Language"C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html…

基础篇9-python基本数据结构-列表

基础篇9-python基本数据结构-列表一.列表&#xff1a;1.有序的集合2.通过偏移来索引&#xff0c;从而读取数据3.支持内嵌a [[1,2,3],[4,5,6]]4.可变类型a[0][1] 7二.切片a [1,2,3,4,5,6,7]a[0:3:1]0 索引开始3 索引结束1 间隔(默认1)正向索引 它是从左往右索引假如要取出1234…

用AI打造科技公益新模式,腾讯发起公益创新挑战赛,聚焦三大社会问题

近日&#xff0c;由腾讯基金会、企鹅伴成长、腾讯优图实验室、腾讯云AI、腾讯云开发联合发起的腾讯Light公益创新挑战赛在三亚宣布正式启动。本次比赛以“AI&#xff0c;让美好现在发生”为主题&#xff0c;与联合国儿童基金会、深圳市信息无障碍研究会、桃花源生态保护基金会三…

一个查看全部用户的磁盘空间使用情况的脚本

一个查看全部用户的磁盘空间使用情况的脚本 脚本程序例如以下&#xff1a; #!/bin/sh for user in ls /home dodu -hs "/home/"$user done脚本运行结果&#xff1a; [rootsyy ~]# . homeusage.sh 32K /home/saleli 9.2G /home/syy 500K /home/wph太简单了…

Gridview导出到Excel,Gridview中的各类控件,Gridview中删除记录的处理

Asp.net 2.0中新增的gridview控件&#xff0c;是十分强大的数据展示控件&#xff0c;在前面的系列文章里&#xff0c;分别展示了其中很多的基本用法和技巧&#xff08;详见&#xff1c; ASP.NET 2.0中Gridview控件高级技巧&#xff1e;)。在本文中&#xff0c;将继续探讨有关的…

对标Oculus Quest2,爱奇艺奇遇VR打的什么牌?

出品 | AI科技大本营 作者 | 阿司匹林 1月6日&#xff0c;爱奇艺奇遇VR在京召开主题为“谁与争锋”的VR技术发布会&#xff0c;正式发布国内首个CV&#xff08;计算机视觉技术&#xff09;头手6DoF VR交互技术——追光&#xff0c;并面向全球VR游戏开发者启动“哥伦布计划”。 …

DVWA默认用户名密码

有些东西不好找啊&#xff0c;自己动手丰衣足食&#xff5e;&#xff5e; DVWA默认的用户有5个&#xff0c;用户名密码如下&#xff08;一个足以&#xff09;&#xff1a; admin/password gordonb/abc123 1337/charley pablo/letmein smithy/password转载于:https://www.cnblog…

idea 基本设置

1. 打开首先设置 maven,添加配置文件 2.自动导入 搜索 auto import ,勾选 Optimize imports on the fly&#xff1a;自动去掉一些没有用到的包Add unambiguous imports on the fly&#xff1a;自动帮我们优化导入的包3.快捷键 切换成 eclipse 版本&#xff0c;智能提示快捷键 …

ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)

学习整理了一下(一).功能用HttpHandler实现图片验证码(二).代码如下1. 处理程序文件 ValidateImageHandler.ashx代码如下1 <% WebHandler Language"C#"Class"ValidateImageHandler"%>2 3 usingSystem;4 usingSystem.Web;5 usingSystem.Web.SessionSt…

linux下配置ip地址的方法

&#xff08;1&#xff09;Ifconfig命令第一种使用ifconfig命令配置网卡的ip地址。此命令通常用来零时的测试用&#xff0c;计算机启动后ip地址的配置将自动失效。具体用法如下。Ipconfig ethx ipadd netmask x.x.x.x。其中ethx中的x代表第几快以太网卡&#xff0c;…

百万美元技术大奖,雷军颁给了秒充和隐私保护技术团队

1月7日&#xff0c;2020年小米百万美金技术大奖揭晓&#xff0c;经过小米集团技术委员会多轮评选&#xff0c;手机部小米秒充团队、软件与体验部的MIUI隐私保护团队&#xff0c;双双赢得了价值100万美元的技术大奖&#xff08;小米受限股&#xff09;。 120W有线秒充&#xff…

在 Android 应用程序中使用 SQLite 数据库以及怎么用

part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库。它支持 SQL 语言&#xff0c;而且仅仅利用非常少的内存就有非常好的性能。此外它还是开源的&#xff0c;不论什么人都能够使用它。很多开源项目&#xff08;(Mozilla, PHP, Python&#xf…

asp.net 2.0 权限树的控制

做权限的时候,主要实现如下功能1、该节点可以访问&#xff0c;则他的父节点也必能访问&#xff1b;2、该节点可以访问&#xff0c;则他的子节点也都能访问&#xff1b;3、该节点不可访问&#xff0c;则他的子节点也不能访问。使用带CheckBox的数型结构能得到很好的用户体验,可是…

腾讯首位17级杰出科学家诞生:腾讯AI Lab负责人张正友

2021年1月8日腾讯宣布&#xff0c;腾讯Robotics X实验室及腾讯AI Lab负责人张正友博士成为腾讯首位17级研究员/杰出科学家&#xff0c;17级是腾讯历史上最高的专业职级。 腾讯AI Lab及腾讯Robotics X实验室负责人张正友博士荣获这一殊荣的张正友博士&#xff0c;领导创建了世界…

论性能测试的必要性

论性能测试的必要性说起为什么要进行性能测试&#xff0c;前面已经多少谈到一些。下面&#xff0c;从“性能测试与功能测试关系”及“性能自动化测试优势”两方面给读者作答。1. 性能测试与功能测试关系性能测试和功能测试是测试工作中两个不同的方面&#xff0c;只是在关注的内…

Spring学习系列(二) 自动化装配Bean

一、Spring装配-自动化装配 Component和ComponentScan 通过spring注解&#xff08;Component&#xff09;来表明该类会作为组件类&#xff0c;并告知Spring要为这类创建bean&#xff0c;不过组件扫描默认是不启动的&#xff0c;需要显式的配置Spring&#xff0c;从而命令Spring…

如何让SELECT 查询结果额外增加自动递增序号

图表1如果数据表本身并不内含自动地增编号的字段时&#xff0c;要怎么做才能够让SELECT查询结果如图表1所示&#xff0c;额外增加自动递增序号呢&#xff1f;我们提供下列五种方法供您参考&#xff1a;USE北风贸易;GO/* 方法一*/SELECT序号(SELECT COUNT(客户编号)FROM 客户AS …

UVa 10131

1 /*2 3 * 类似于最长递减子序列4 */5 #include<stdio.h>6 7 #include<string.h>8 #include<algorithm>9 using namespace std; 10 #define Max(x,y) (x>y?x:y) 11 #define max 10005 12 struct node{ 13 int w,s,c; 14 }a[max]; 15 int dp[max]; 16…

再见 VBA!神器工具统一 Excel 和 Python

作者 | 东哥起飞来源 | Python数据科学经常给大家推荐好用的数据分析工具&#xff0c;也收到了铁子们的各种好评。这次也不例外&#xff0c;我要再推荐一个&#xff0c;而且是个爆款神器。Excel和Jupyter Notebok都是我每天必用的工具&#xff0c;而且两个工具经常协同工作&…

Android 开发者必知的开发资源

英文原文&#xff1a;Bongzimo 翻译: ImportNew-黄小非 译文链接&#xff1a;http://www.importnew.com/3988.html Android 开发者必知的开发资源 随着Android平台市场份额的持续猛增 &#xff0c;越来越多的开发者开始投入Android应用程序的开发大潮。如果您是一位2013年刚刚…

SQL Server各种日期计算方法

通常&#xff0c;你需要获得当前日期和计算一些其他的日期&#xff0c;例如&#xff0c;你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割&#xff08;年、月、日等&#xff09;&#xff0c;然后仅仅用分割出来的年、月、日等放在几…

TensorFlow入门

为什么80%的码农都做不了架构师&#xff1f;>>> TensorFlow核心教程 导入TensorFlow计算图tf.train API 完成程序tf.contrib.learn 基本用法自定义模型下一步原文链接 : https://www.tensorflow.org/get_started/get_started 译文链接 : http://www.apache.wiki/pa…

C#实现类似qq的屏幕截图程序

因为近来想写个类似于远程桌面监控的程序,该程序中要用到屏幕捕捉.为实现该程序的一部分功能,做了个小DEMO.程序很简单&#xff0c;用到的技术也不多&#xff0c;只能实现类似qq的截图功能(方法虽然很笨) 程序流程如下&#xff1a;1.截取整个屏幕并保存 2.新开一个全屏窗口,将保…

构建RESTful风格的WCF服务

RESTful Wcf是一种基于Http协议的服务架构风格。 相较 WCF、WebService 使用 SOAP、WSDL、WS-* 而言&#xff0c;几乎所有的语言和网络平台都支持 HTTP 请求。 RESTful的几点好处&#xff1a; 1、简单的数据通讯方式&#xff0c;基于HTTP协议。避免了使用复杂的数据通讯方式。 …

又一起“删库”:链家程序员怒删公司 9TB 数据,被判 7 年

整理 | 王晓曼来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;1月6日&#xff0c;北京市第一中级人民法院公布前链家员工破坏计算机信息系统罪一案的刑事裁定书&#xff0c;被告人因不满工作调整&#xff0c;删公司9TB数据。北京市海淀区人民法院判决认定&#xff…

hbase以mr导数据方式

./hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator"," -Dimporttsv.columnsHBASE_ROW_KEY,f1:name,f1:age,f1:addr t1 /zldata/demo1.csv转载于:https://www.cnblogs.com/sajia/p/6972420.html

Php中正则小结(一)

一.概念 语法模式类似perl.表达式必须用分隔符闭合&#xff0c;比如一个正斜杠(/). 分隔符可以是任意非字母非数字&#xff0c;除反斜杠(\)和空字节之外的非空白ascii字符 如果分隔符 在表达式中使用&#xff0c;需要使用反斜线进行转义。 二.组成 元字符 一个正则表达式基本组…

在C#.net中如何操作XML

在C#.net中如何操作XML需要添加的命名空间&#xff1a;using System.Xml; 定义几个公共对象&#xff1a;XmlDocument xmldoc ;XmlNode xmlnode ;XmlElement xmlelem ; 1&#xff0c;创建到服务器同名目录下的xml文件&#xff1a; 方法一&#xff1a;xmldoc new XmlDocument…

精彩碰撞!神经网络和传统滤波竟有这火花?

作者 | 凌霄出品 | AI大本营&#xff08;ID&#xff1a;rgznai100&#xff09;惯性传感器在航空航天系统中主要用于姿态控制和导航。微机电系统的进步促进了微型惯性传感器的发展&#xff0c;该装置进入了许多新的应用领域&#xff0c;从无人驾驶飞机到人体运动跟踪。在捷联式 …