zoukankan      html  css  js  c++  java
  • poj 1222 EXTENDED LIGHTS OUT 高斯消元

    传送门

    题目就是给你一些灯, 点击一个灯, 就会改变它自身和它四周的所有的灯的状态。 给你所有灯的初始状态, 要你输出所有灯的点击情况, 1代表点击, 0代表不点击。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define mem(a) memset(a, 0, sizeof(a))
     4 const int dir[][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} };
     5 int a[35][35], ans[35];
     6 void gauss() {
     7     for(int k = 0; k<30; k++) {
     8         int i = k;
     9         while(i<30&&!a[i][k])
    10             i++;
    11         if(i>k) {
    12             for(int r = 0; r<=30; r++)
    13                 swap(a[i][r], a[k][r]);
    14         }
    15         for(int i = 0; i<30; i++) {
    16             if(i!=k && a[i][k]) {
    17                 for(int j = 0; j<=30; j++) {
    18                     a[i][j] ^= a[k][j];
    19                 }
    20             }
    21         }
    22     }
    23     for(int i = 0; i<30; i++) {
    24         if(a[i][30]) {
    25             int j = 0;
    26             while(j<30&&!a[i][j])
    27                 j++;
    28             ans[j] = a[i][30];
    29         }
    30     }
    31 }
    32 int main()
    33 {
    34     int t;
    35     cin>>t;
    36     for(int cnt = 1; cnt<=t; cnt++) {
    37         mem(a);
    38         mem(ans);
    39         for(int i = 0; i<30; i++) {
    40             scanf("%d", &a[i][30]);
    41         }
    42         for(int i = 0; i<30; i++)
    43             a[i][i] = 1;
    44         for(int i = 0; i<5; i++) {
    45             for(int j = 0; j<6; j++) {
    46                 for(int k = 0; k<4; k++) {
    47                     int x = i+dir[k][0];
    48                     int y = j+dir[k][1];
    49                     if(x>=0&&x<5&&y>=0&&y<6) {
    50                         a[i*6+j][x*6+y] = 1;
    51                     }
    52                 }
    53             }
    54         }
    55         gauss();
    56         printf("PUZZLE #%d
    ", cnt);
    57         for(int i = 0; i<30; i++) {
    58             int x = i/6;
    59             int y = i%6;
    60             a[x][y] = ans[i];
    61         }
    62         for(int i = 0; i<5; i++) {
    63             printf("%d", a[i][0]);
    64             for(int j = 1; j<6; j++) {
    65                 printf(" %d", a[i][j]);
    66             }
    67             puts("");
    68         }
    69     }
    70 }
  • 相关阅读:
    1144 The Missing Number (20分)
    1145 Hashing
    1146 Topological Order (25分)
    1147 Heaps (30分)
    1148 Werewolf
    1149 Dangerous Goods Packaging (25分)
    TypeReference
    Supervisor安装与配置()二
    谷粒商城ES调用(十九)
    Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
  • 原文地址:https://www.cnblogs.com/yohaha/p/5009691.html
Copyright © 2011-2022 走看看