zoukankan      html  css  js  c++  java
  • poj1830开关问题

    【题意】

      与poj1222类似,只不过关系不再是通过矩阵体现,而是直接给出。

    【题解】

      根据关系建立出方程组,再高斯消元。若求出变元个数为num,答案即等于2^num。若解方程时有一个方程未知数系数为0,常数不为0,则是无解。

    【代码】

     

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 struct node
     6 {
     7     int vec[31],c;
     8 }a[31];
     9 int T,n,x,y,ans;
    10 int gauss()
    11 {
    12     int po;
    13     for (int i=1,o=1;o<=n;)
    14     {
    15         for (int j=i;j<=n;++j)
    16             if (a[j].vec[o])
    17             {
    18                 swap(a[i],a[j]);
    19                 break;
    20             }
    21         if (!a[i].vec[o])
    22         {
    23             ++o;
    24             continue;
    25         }
    26         for (int j=i+1;j<=n;++j)
    27             if (a[j].vec[o])
    28             {
    29                 if (a[i].c)    a[j].c^=1;
    30                 for (int k=o;k<=n;++k)
    31                     if (a[i].vec[k])    a[j].vec[k]^=1;
    32             }
    33         ++i;++o;po=i;
    34     }
    35     ans=1;
    36     for (int i=po;i<=n;++i)
    37         if (a[i].c)    return -1;
    38         else ans<<=1;
    39     return ans;
    40 }
    41 int main()
    42 {
    43     scanf("%d",&T);
    44     while (T--)
    45     {
    46         scanf("%d",&n);
    47         memset(a,0,sizeof(a));
    48         for (int i=1;i<=n;++i)    scanf("%d",&a[i].c);
    49         for (int i=1;i<=n;++i)
    50         {
    51             scanf("%d",&x);
    52             a[i].c^=x;
    53             a[i].vec[i]=1;
    54         }
    55         while(1)        
    56         {
    57             scanf("%d%d",&x,&y);
    58             if (!x||!y)    break;
    59             a[y].vec[x]=1;
    60         }
    61         ans=gauss();
    62         if (ans==-1)    puts("Oh,it's impossible~!!");
    63         else    printf("%d
    ",ans);
    64     }
    65     return 0;
    66 }
    View Code
  • 相关阅读:
    🔨FFmpeg 转换至 MP4 视频格式
    🔨Ubuntu Linux '门' '复' 显示不标准
    🔨Youtube-dl 开代理搭配 Aria2 多线程加速下载
    📔 如何用英语的思维来思考 How to THINK in English
    🚀 sublime 加速软件下载
    🚀 snap 代理
    🚀 Chocolatey 代理
    🔨 Deepin V20 软件及遇到的问题
    💿 npm 换源 (转载)
    🔨FFmpeg 合并视频
  • 原文地址:https://www.cnblogs.com/Bleacher/p/7587281.html
Copyright © 2011-2022 走看看