zoukankan      html  css  js  c++  java
  • URAL 1042 Central Heating

    URAL_1042

        由于题目中说明了每个工人不能被其他工人取代,也就是说如果矩阵的列向量是线性无关的,于是增广矩阵的秩一定是N,所以不会有无解的情况,并且解是唯一的,所以直接用高斯消元求解即可。

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #define MAXD 260
    using namespace std;
    int N, mat[MAXD][MAXD], ans[MAXD];
    void init()
    {
        int i, j, k;
        memset(mat, 0, sizeof(mat));
        for(i = 0; i < N; i ++)
        {
            for(;;)
            {
                scanf("%d", &j);
                if(j == -1)
                    break;
                mat[j - 1][i] = 1;
            }
            mat[i][N] = 1;
        }
    }
    void gauss()
    {
        int i, j, k;
        for(i = 0; i < N; i ++)
        {
            if(mat[i][i] == 0)
            {
                for(j = i + 1; j < N; j ++)
                    if(mat[j][i])
                    {
                        for(k = i; k <= N; k ++)
                            swap(mat[i][k], mat[j][k]);
                        break;
                    }
            }
            for(j = i + 1; j < N; j ++)
                if(mat[j][i])
                {
                    for(k = i; k <= N; k ++)
                        mat[j][k] ^= mat[i][k];
                }
        }
        for(i = N - 1; i >= 0; i --)
        {
            ans[i] = mat[i][N];
            for(j = i + 1; j < N; j ++)
                ans[i] ^= mat[i][j] * ans[j];
        }
    }
    void solve()
    {
        int i, j, k, flag = 0;
        gauss();
        for(i = 0; i < N; i ++)
            if(ans[i])
            {
                if(flag)
                    printf(" ");
                else
                    flag = 1;
                printf("%d", i + 1);
            }
        printf("\n");
    }
    int main()
    {
        while(scanf("%d", &N) == 1)
        {
            init();
            solve();
        }
        return 0;
    }
  • 相关阅读:
    java 标准异常
    java 重新抛出异常
    java 异常链
    java 轨迹栈
    mysql死锁-非主键索引更新引起的死锁
    数据库事务
    JMS学习笔记(一)
    log4j中将SocketAppender将日志内容发送到远程服务器
    Kubernetes之kubectl常用命令
    java代理与动态代理的学习
  • 原文地址:https://www.cnblogs.com/staginner/p/2496431.html
Copyright © 2011-2022 走看看