[高斯消元] POJ 2345 Central heating
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 614 | Accepted: 286 |
Description
Your task is to determine who of the technicians is to get an instruction "to turn on the heating" in order to heat all the Ural State University. Note that there are N technicians and N valves at the University (1 <= N <= 250).
Input
Output
Sample Input
4
1 2 -1
2 3 4 -1
2 -1
4 -1
Sample Output
1 2 3
Source
#include<stdio.h>
#include<string.h>
int a[270][270],ans[270],n;
void swap(int *a,int *b)
{
int cnt=0,c[270],i;
for(cnt=1;cnt<=n+1;++cnt)
{
c[cnt]=*a;
*a++=*(b+cnt-1);
}
for(i=1;i<=n+1;++i) *b++=c[i];
}
void XOR(int col,int *a,int *b)
{
int i;
for(i=col;i<=n+1;++i) *b++^=*a++;
}
void init()
{
int col=0,x,i;
for(i=1;i<=n;++i) a[i][n+1]=1;
for(col=1;col<=n;++col) while(~scanf("%d",&x)&&x!=-1) a[x][col]=1;
}
void solved()
{
int col,row,node;
for(col=1;col<=n;++col)
{
node=0;
for(row=col;row<=n;++row)
{
if(a[row][col])
{
node=row;
break;
}
}
if(node) swap(a[node]+1,a[col]+1);
for(row=col+1;row<=n;++row)
if(a[row][col]) XOR(col,a[col]+col,a[row]+col);
}
}
void target()
{
int i,j;
for(i=n;i>=1;--i)
{
ans[i]=a[i][n+1];
for(j=n-1;j>=1;--j) a[j][n+1]^=(ans[i] & a[j][i]);
}
int first=1;
for(i=1;i<=n;++i) if(ans[i]) printf("%d ",i);
printf("\n");
}
int main()
{
int t,x,col=0;
scanf("%d",&n);
init();
solved();
target();
return 0;
}
[高斯消元] POJ 2345 Central heating的更多相关文章
- poj 2345 Central heating
Central heating Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 678 Accepted: 310 Des ...
- POJ 2345 Central heating(高斯消元)
[题目链接] http://poj.org/problem?id=2345 [题目大意] 给出n个开关和n个人,每个人可以控制一些开关,现在所有的开关都是关着的 一个指令可以让一个人掰动所有属于他控制 ...
- 数学 --- 高斯消元 POJ 1830
开关问题 Problem's Link: http://poj.org/problem?id=1830 Mean: 略 analyse: 增广矩阵:con[i][j]:若操作j,i的状态改变则con[ ...
- 【POJ】2947 Widget Factory(高斯消元)
http://poj.org/problem?id=2947 各种逗啊..还好1a了.. 题意我就不说了,百度一大把. 转换为mod的方程组,即 (x[1,1]*a[1])+(x[1,2]*a[2]) ...
- POJ 1681---Painter's Problem(高斯消元)
POJ 1681---Painter's Problem(高斯消元) Description There is a square wall which is made of n*n small s ...
- POJ 3185 The Water Bowls(高斯消元-枚举变元个数)
题目链接:http://poj.org/problem?id=3185 题意:20盏灯排成一排.操作第i盏灯的时候,i-1和i+1盏灯的状态均会改变.给定初始状态,问最少操作多少盏灯使得所有灯的状态最 ...
- 【POJ 1830】 开关问题 (高斯消元)
开关问题 Description 有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为 ...
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元)
[题目链接] http://poj.org/problem?id=1222 [题目大意] 给出一个6*5的矩阵,由0和1构成,要求将其全部变成0,每个格子和周围的四个格子联动,就是说,如果一个格子变了 ...
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元)题解
题意:5*6的格子,你翻一个地方,那么这个地方和上下左右的格子都会翻面,要求把所有为1的格子翻成0,输出一个5*6的矩阵,把要翻的赋值1,不翻的0,每个格子只翻1次 思路:poj 1222 高斯消元详 ...
随机推荐
- JavaScript的chapterII
程序流程控制: 1.条件语句——if if(condition) {statement1} else {statement2} 例子: if(i<60 && ...
- 微信小程序-视图条件渲染
条件渲染 wx:if 在框架中,我们用 wx:if="{{condition}}" 来判断是否需要渲染该代码块: <view wx:if="{{condition} ...
- JArray数组每个JObject对象添加一个键值对
JArray ja = new JArray(); JObject jo = new JObject(); jo.Add("1","1"); ja.Add(jo ...
- python pyqt4 ide eric安装
注意事项 关于python,pyqt的版本 笔者安装的是eric,原来电脑安装的是64位的python,32位的pyqt4,导致系统找不到pyqt,后来更换python版本为32搞定,猜测pyqt的版 ...
- Android Studio -修改LogCat的颜色
Android Studio -修改LogCat的颜色 author:Kang,Leo weibo:http://weibo.com/kangyi 效果图 设置 Preference->Edit ...
- 用CSS3和Canvas来画网格
我们经常使用一些excel表格来处理数据,在html中,我们可以用table来制成表格.今天来看一下一些不同的方法. 方法一:使用CSS3的background的linear-gradient属性 l ...
- 20161117__修改yum源
1.CentOS6.5中修改yum源 http://www.cnblogs.com/liuling/p/2014-4-14-001.html 在自己安装的CentOS6.5中使用yum安装软件,总是提 ...
- 反射(Reflection)
反射主要用于在程序运行期间动态解析相关类的类名,命名空间,属性,方法并进行相应操作,以下通过两个简单的例子进行了说明: 示例1:调用程序集内部方法,运行时动态获取相关类的信息,包括类名,命名空间等信息 ...
- IE下,js改变绝对定位的属性不生效
如果想要动态改变定位位置的值,例如改变TOP的值,IE下必须要给TOP一个初始值,不然不生效..
- LogConfigruration
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import ...