PKU 1830 开关问题

[PKU 1830]关灯问题(高斯消元) 【题目大意】:有n个灯,给你一个初始状态、一个目标状态,然后告诉你灯之间的联系情况(一个灯状态改变会使它相邻的灯的状态改变,这种改变不传递),每个灯的状态只许改变一次,问你有多少种方案。【题目分析】:简单的看一看,就发现这是一个方程组。每个灯最后的状态实际上是影响它的灯改变状态情况之和mod 2。我们知道对于只有0和1的运算来说,xor运算等价于加法mod 2,所以这就转化成了一个xo 阅读详情
 题目:http://poj.org/problem?id=1830


学完高斯消元做的第一题, 高斯消元的难点在于怎样建立方程组,来建立系数矩阵。如何建方程组:http://blog.youkuaiyun.com/shiren_Bod/article/details/5766907,写的很好, 学习了~~。

此题需要注意的是,初始化矩阵时,开关I和J不要弄反了~~~ 如果有自由变元,返回1<<(n-row)。


#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace  std;
const int maxn=30;
int ca, n, a, b;
int begin[maxn+10], end[maxn+10], map[maxn+10][maxn+10];
int gauss()
{
	int row, col;
	for (col=0, row=0; row<n, col<n; col++, row++)
	{
		int maxr=row;
		for (int i=row; i<n; i++) if (map[i][col]!=0) {maxr=i; break;}
		if (maxr!=row) 
			for (int i=0; i<=n; i++) swap(map[row][i], map[maxr][i]);
		if (map[row][col]==0) {row--; continue;}
		for (int i=row+1; i<n; i++)
		{
			if (!map[i][col]) continue;
			for (int j=col; j<=n; j++) map[i][j]=map[i][j]^map[row][j];
		}
	}
	for (int i=row; i<n; i++) if (map[i][n]!=0) return -1;
	return (1<<(n-row));
}
int main()
{
	//freopen("in.txt", "r", stdin);
	scanf("%d", &ca);
	while (ca--)
	{
		scanf("%d", &n);
		memset(map, 0, sizeof(map));
		for (int i=0; i<n; i++) scanf("%d", &begin[i]);
		for (int i=0; i<n; i++) scanf("%d", &end[i]), map[i][n]=begin[i]^end[i];
		for (int i=0; i<n; i++) map[i][i]=1;
		while (scanf("%d %d", &a, &b)==2)
		{
			if (a==0&&b==0) break;
			map[b-1][a-1]=1;
		}
		int flag=gauss();
		if (flag==-1) printf("Oh,it's impossible~!!\n");
		else printf("%d\n", flag);
	}
}


读《认知科学导论》(萨伽德) 总结 1. 作者的写作思路 本书是建立在对心智的理解采用表征与计算的方式。对心智表征-计算的理解方式是与计算机的本质相联系。计算机本质上是一个符号系统,符号系统包含两个部分,一个是符号,另一个是建立在符号上的操作。对心智采用表征-计算的方式理解,很容易与计算机建立起类比关系。同时人们在探索人工智能领域采用表征-计算方式已经取得了无数辉煌的成就,故表征-计算式现在研究的主流方法。 本书的有两个部分组成 阅读详情

相关推荐

用STM32定时器PWM高级功能驱动步进电机:F103C8T6+TB6600实战教程

本文详细介绍了如何利用STM32F103C8T6微控制器的定时器PWM高级功能驱动TB6600步进电机驱动器,实现高效、灵活的运动控制方案。通过硬件配置、PWM参数计算、运动控制算法及TB6600高级功能应用的全面解析,为工业自动化和精密控制领域提供了实用的技术参考。

game4的博客 185

PKU_算法_分类

主流算法:1.搜索 //回溯2.DP(动态规划) 3.贪心 4.图论 //Dijkstra、最小生成树、网络流5.数论 //解模线性方程6.计算几何 //凸壳、同等安置矩形的并的面积与周长7.组合数学 //Polya定理8.模拟 9.数据结构 //并查集、堆10.博弈论 //表示举例 非主流算法:1.送分题 2.构造 3.高精度 

ChipArtist's Blogs 5128

【RS】哨兵系列数据下载(哨兵2号Sentinel-2波段介绍、下载)

以哨兵二号为示例,分享如何下载欧空局的哨兵系列数据

Remote Sensing迷途小书童 1万+

pku 1830 开关问题(构造矩阵+高斯消元)

开关问题 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4653   Accepted: 1675 Description 有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相

街角的花街糖 759

编译原理2024期末复习(面向做题,大题速学)【太原理工大学】

归约-归约”冲突就是在项目集规范族一个状态中两个。

m0_63181421的博客 1万+

OpencvSharp学习笔记(一):图片的打开,保存灰度化,保存

近来萌生了学习OpenCv的想法,经过度娘得知老夫会的C#不能直接用OpenCv,只能用他的儿子OpenCvSharp与EmguCV,奈何奈何,这两玩意的资料少的出奇,只能慢慢的摸索了,EmguCV先不说,老夫找到了牛批的资料,先摸索OpencvSharp吧 首先打开VS通过Nuget安装 选择版本后点击安装就OK了. 安装完成后,引用里面就有以下的玩意儿了… 废话不多说了,在写程序前先 using OpenCvSharp 图片打开,灰度化,保存代码如下: static void Main(strin

猥琐de专注 7186

【pku1830】开关问题 (高斯消元解xor方程组)

题目大意:      在一些有依赖关系的灯里(即改了这个,那个也改了),要通过改变若干灯的状态来从初始状态达到目标状态,每个灯最多改变一次,方案总数。分析:      由于每个灯只能改1次,那么最终的状态就只与跟这个灯相关的灯的改变情况有关,容易想到设立方程组来对问题求解。至于解方程组,高斯大牛已经帮咱们铺平了道路了,在此对他表示崇高的敬意。算法:     用0表示i号灯不改,1表示改,那么对于每个灯把跟它相关(包括自己)的所有灯的改变情况xor起来,就是最终的改变情况,而最终改变情况可以由初末状态得到,再

663

关于 Nginx 监听地址 0.0.0.0 的详细解释

0.0.0.0在Nginx配置中表示监听服务器所有网络接口(包括公网IP、内网IP和本地回环地址),这是默认配置。当使用listen 80;时,Nginx会接受通过服务器任何IP地址的80端口访问请求。相比只监听特定IP,这种配置更通用,但也意味着服务会对外网开放,需注意安全风险。可通过netstat命令验证监听状态,显示0.0.0.0:80即表示正确配置。

weixin_43674738的博客 1563

【PKU1830开关问题】解异或方程组(更正版)

<br />之前的那个帖子写的解方程的方法是错误的!<br />之前的丑方法:<br />   先用行列变换来消元,如果发现当前的i号元相关的所有系数都为0了,直接判其为自由元,同时跳过这个方程,完全忽略它然后接着做,最后回代判无解<br />   X         X         X              X             <br />    X       XX       X              XX<br />     X     X  X     X           

1171

基于 STM32 的乒乓球发球机控制系统设计与实现

乒乓球发球机是一种能够按照预设参数自动、连续发出乒乓球的训练设备。本系统以 STM32F103C8T6 为主控核心,通过控制实现球速调节、实现落点与旋转方向控制、实现出球节奏控制,并配合 OLED 显示与按键人机交互,实现速度、频率、落点、旋转四大参数的可调发球训练。

weixin_42300449的博客 208

国科大学习资料--计算机网络--历年考题1

国科大学习资料–计算机网络–历年考题1 1、假定有一个通信协议,每个分组都引入100字节的开销用于头和成帧,现在使用这个协议发送1M字节的数据(为方便计算,1M=10^6),然而在传递的过程中有一个字节被破坏了,因而包含该字节的那个分组被丢弃并重传。(1)当数据的分组大小为1000、5000、20000和40000字节时,计算相应(包括开销)的传递字节总数目。(2)计算分组大小的最优值是多少,即分组的大小为何值时总的传输字节数最少。(提示:最优值不是1000、5000、20000和40000字节中的一个)

无名何许人的博客 1180

高斯消元

高斯消元 算法目的:             高斯消元,一般用于求解线性方程组AX = B(或 模线性方程组AX mod P = B),以四个未知数,四个方程为例,AX=B表示成4x4的矩        阵和4x1的矩阵相乘的形式:   其中A和B(b0 b1 b2 b3)已知,要求列向量X(x0 x1 x2 x3)的值。 算法核心思想:             对于n个方程,m

h_hui_hui的博客 819

北斗导航 | 卫星/惯导组合导航方法

从组合导航结构方面来讲,卫星/惯导(下文以GPS/INS)组合模式一般分为三种,即松组合、紧组合和超紧组合(即深组合)。

尘世冰封的专栏 1533

[转]高斯消元题集

和本文无关 :AC巨巨的数论小结:http://hi.baidu.com/aekdycoin/item/ec528c969cf7a230336eebae POJ 1222 EXTENDED LIGHTS OUT http://acm.pku.edu.cn/JudgeOnline/problem?id=1222POJ 1681 Painter's Problemhttp://a...

weixin_30550271的博客 83

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

高斯消元法(Gauss Elimination) 分析 & 题解 & 模板——czyuan原创

//最近一直在做一个数论专题,后期有待整理,先将有关资料收藏下,在学习高斯消元的时候看了czyuan大牛的此文获益匪浅,czyuan的此份模板可以解决大多高斯问题,当然并不是万能的,其中建立矩阵是难点,需要自己琢磨,并且对于方程组是否有解、解的个数以及自由元等问题也需要自己做题慢慢思考,自己做了两三道题前前后后在建矩阵以及对一些解的问题在Gauss函数中改了几十次,逐渐摸索,还不算掌握的好,有待再

z309241990的专栏 1072

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

高斯消元法(Gauss Elimination) 分析 & 题解 & 模板

高斯消元法(Gauss Elimination) 分析 & 题解 & 模板——czyuan原创 高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。 高斯消元法的原理是: 若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组。 所以我们可以用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解。

2236

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

高斯消元法(Gauss Elimination)

高斯消元法(Gauss Elimination) 分析 & 题解 & 模板——czyuan原创 高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。 高斯消元法的原理是: 若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组。 所以我们可以用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解。

dearmango 1153

数学题集

1.burnside定理,polya计数法 pku2409 Let it Bead    pku2154 Color    pku1286 Necklace of Beads pku2888 Magic Bracelet

嗯。 1263

高斯消元讲解

高斯消元法(转)   2009-10-02 00:25:38|  分类: ACM模版题 |举报 |字号 订阅 高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。 高斯消元法的原理是: 若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组。 所以我们可以用初等行变换把增广矩阵

龙崎的专栏 835

高斯消元 模版

高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。 高斯消元法的原理是: 若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组。 所以我们可以用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解。 以上是线性代数课的回顾,下面来说说高斯消元法在编程中的应用。 首先,先介绍程序中高斯消元法的步骤: (我们设方程组中方...

weixin_30510153的博客 141

高斯消元法(转)

高斯消元法(转) 高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。 高斯消元法的原理是: 若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组。 所以我们可以用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解。 以上是线性代数课的回顾,下面来说说高斯消元法在编程中的应用。 首先,先介绍程序中高斯消元法的

weiwei2012start的专栏 1017

数学专题题集

转载:http://blog.youkuaiyun.com/u011686226/article/details/26575735 1.burnside定理,polya计数法 pku2409 Let it Bead    pku2154 Color pku1286 Necklace of Beads pku2888 Magic Bracelet UVa10294

Felix8181的专栏 450
上一篇: 高斯消元法(Gauss Elimination) 分析 & 题解 & 模板——czyuan原创
下一篇: PKU 2947 Widget Factory
Mei废话
博客等级 码龄14年 5粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值