博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数学 --- 高斯消元 POJ 1830
阅读量:6507 次
发布时间:2019-06-24

本文共 1224 字,大约阅读时间需要 4 分钟。

开关问题 

Problem's Link: 


 

Mean: 

analyse:

增广矩阵:con[i][j]:若操作j,i的状态改变则con[i][j]=1,否则con[i][j]=0。

最后的增广矩阵应该是N*(N+1),最后一列:对比开光的始末状态,若相同则为0,若不同则为1;

 

最后的解共有三种:

1.无解,既出现了一行中前面N个数为0,第N+1的值非0;
2.没有第1种情况出现,存在X行数值全为0,则解的个数为2^X;
3,没有1,2 两种情况出现,唯一解,输出1。

Time complexity: O(n)

 

Source code: 

 

/** this code is made by crazyacking* Verdict: Accepted* Submission Date: 2015-06-17-22.36* Time: 0MS* Memory: 137KB*/#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define ULL unsigned long longusing namespace std;const int p=30;int con[p][p];int N;int beg[p],fin[p];int function(){ int i,j,k,t,row,col,temp,count=0; for(row=col=1; row<=N&&col<=N; row++,col++) { if(con[row][col]==0) { for(i=row+1; i<=N; i++) { if(con[i][col]!=0) { for(j=1; j<=N+1; j++) { swap(con[row][j],con[i][j]); } break; } } } if(con[row][col]==0) { row--; continue; } for(k=1; k<=N; k++) { if(con[k][col]!=0&&k!=row) { temp=-(con[k][col]/con[row][col]); for(t=col; t<=N+1; t++) { con[k][t]=(temp*con[row][t])+con[k][t]; } } } } for(k=row; k
View Code

 

转载地址:http://slzfo.baihongyu.com/

你可能感兴趣的文章
yaf的安装
查看>>
比较java与C++的不同
查看>>
Twitter Storm入门
查看>>
Ansible自动化运维配置与应用(结合实例)
查看>>
下面简要介绍软件工程的七条原理
查看>>
Lua(三)——语句
查看>>
overflow清除浮动的原理
查看>>
ibatis 动态查询
查看>>
汇编语言之实验一
查看>>
git 调用 Beyond Compare
查看>>
SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)[转]
查看>>
android实现图片识别的几种方法
查看>>
mvc学习地址
查看>>
masonry 基本用法
查看>>
Word产品需求文档,已经过时了【转】
查看>>
dtoj#4299. 图(graph)
查看>>
zabbix-3.4 触发器
查看>>
换用代理IP的Webbrowser方法
查看>>
【视频编解码·学习笔记】7. 熵编码算法:基础知识 & 哈夫曼编码
查看>>
spark集群安装部署
查看>>