結果
問題 | No.460 裏表ちわーわ |
ユーザー | mai |
提出日時 | 2016-12-11 14:31:06 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,862 bytes |
コンパイル時間 | 1,764 ms |
コンパイル使用メモリ | 173,904 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-05-06 18:32:57 |
合計ジャッジ時間 | 2,608 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | WA | - |
testcase_01 | AC | 2 ms
6,940 KB |
testcase_02 | WA | - |
testcase_03 | AC | 2 ms
6,944 KB |
testcase_04 | AC | 2 ms
6,940 KB |
testcase_05 | AC | 2 ms
6,944 KB |
testcase_06 | AC | 2 ms
6,944 KB |
testcase_07 | AC | 2 ms
6,944 KB |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | AC | 2 ms
6,944 KB |
testcase_12 | AC | 2 ms
6,944 KB |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | AC | 2 ms
6,944 KB |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | AC | 2 ms
6,940 KB |
testcase_21 | WA | - |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | AC | 2 ms
6,940 KB |
testcase_25 | WA | - |
testcase_26 | WA | - |
testcase_27 | AC | 2 ms
6,940 KB |
ソースコード
#include<bits/stdc++.h> using namespace std; typedef unsigned int uint; typedef long long int ll; typedef unsigned long long int ull; #define debugv(v) printf("L%d %s => ",__LINE__,#v);for(auto e:v){cout<<e<<" ";}cout<<endl; #define debugm(m) printf("L%d %s is..\n",__LINE__,#m);for(auto v:m){for(auto e:v){cout<<e<<" ";}cout<<endl;} #define debuga(m,w) printf("L%d %s is => ",__LINE__,#m);for(int x=0;x<(w);x++){cout<<(m)[x]<<" ";}cout<<endl; #define debugaa(m,w,h) printf("L%d %s is..\n",__LINE__,#m);for(int y=0;y<(h);y++){for(int x=0;x<(w);x++){cout<<(m)[x][y]<<" ";}cout<<endl;} #define debugaar(m,w,h) printf("L%d %s is..\n",__LINE__,#m);for(int y=0;y<(h);y++){for(int x=0;x<(w);x++){cout<<(m)[y][x]<<" ";}cout<<endl;} #define ALL(v) (v).begin(),(v).end() #define BIGINT 0x7FFFFFFF #define E107 1000000007 void printbit(int u){if(u==0)cout<<0;else{int s=0,k=0;for(;0<u;u>>=1,k++)s=(s<<1)|(u&1);for(;0<k--;s>>=1)cout<<(s&1);}} #define TIME chrono::system_clock::now() #define MILLISEC(t) (chrono::duration_cast<chrono::milliseconds>(t).count()) template<typename T1,typename T2> ostream& operator <<(ostream &o,const pair<T1,T2> p){o<<"("<<p.first<<":"<<p.second<<")";return o;} int width,height; int m,n; int field[100]; int main(){ int i,j,k; int x,y,a,b; cin >> height >> width; n = height*width; vector<valarray<int>> mat_s(n); valarray<int> vec_r(n); for (i=0;i<n;i++){ mat_s[i].resize(n); } for (i=0;i<n;i++){ cin >> vec_r [i]; field[i] = vec_r[i]; } for (i=0;i<n;i++){ x=i%width; y=i/width; for (a=-1+(x==0);a<=1-(x==width-1);a++){ for (b=-1+(y==0);b<=1-(y==height-1);b++){ mat_s[i][x+a+(y+b)*width]=1; } } mat_s[x+y][i]; } //debugaar(mat_s,n,n) for (i=0;i<n;i++){// yoko // pivot if (mat_s[i][i]==0){ for (j=i+1;j<n;j++){ if (mat_s[j][i]==1){ mat_s[j].swap(mat_s[i]); //mat_r[j].swap(mat_r[i]); swap(vec_r[i],vec_r[j]); break; } } } for (j=0;j<n;j++){ // tate if (i==j) continue; if (mat_s[j][i]==0) continue; mat_s[j]^=mat_s[i]; vec_r[j]^=vec_r[i]; } } //debugaar(mat_s,n,n) //debugv(vec_r) // 解だが、最小解では無い vector<int> counter(n); // ここから先嘘っぽい // reselect for (i=0;i<n;i++){ if (vec_r[i]==0) continue; for (j=i;j<=n;j++){ counter[j]+=mat_s[i][j]; } } vector<int> selected(n); for (i=0;i<n;i++){ if (vec_r[i]==0) continue; int si = 0,sl=0; for (j=0;j<n;j++){ if (mat_s[i][j]==0) continue; if (sl<counter[j]){ sl = counter[j]; si = j; } } selected[si]=1; } //debugv(counter); //debugv(selected); // check impossible // for (i=0;i<n;i++){ // if (mat_s[i][i]==0){ // cout << "Impossible" << endl; // return 0; // } // } // checker int result=0; for (i=0;i<n;i++){ if (selected[i]){ // vec_r[i] result+=1; x = i%width; y = i/width; for (a=-1+(x==0);a<=1-(x==width-1);a++){ for (b=-1+(y==0);b<=1-(y==height-1);b++){ field[x+a+(y+b)*width]^=1; } } } } for (i=0;i<n;i++){ if (field[i]){ cout << "Impossible" << endl; return 0; } } cout << result << endl; return 0; }