トピックへのリンク:https://www.luogu.org/problem/P3857
レポートの問題解決:
あなたはXOR後の可能なシナリオの数を見つけるように、シーケンスを考えます。
数が線形ベースに挿入され、最終的な答えは、$(1LL << RES)%2008の$は、線形のグループのいくつかのタイプをresはあります。
ACコード:
1つの#include <ベクトル> 2の#include <cstdioを> 3の#include <iostreamの> 4の#include <cmath> 5の#include <キュー> 6の#include <積層> 7の#include <cmath> 8の#include <アルゴリズム> 9 #定義 nummのCH-48 10 の#defineのPdのputchar( ' ') 11 の#define PNのputchar('の\ n') 12 の#define PB一back 13 の#define Fiの第 14 の#define第二SE 15 の#define FRE1 freopenは(「1.TXTを」、 "R"、 STDIN) 16 の#definefre2 freopenは( "2.txt"、 "W"、STDOUT) 17 使用 名前空間STDを、 18テンプレート<型名T> 19 空隙リード(T&RES){ 20 ブールフラグ= 偽。char型のCH; 21 一方(isdigit(CH = GETCHAR())!)(CH == ' - ')&&(フラグ= 真)。 22 のために(RES = numm; isdigit(CH = GETCHAR()); RESの=(RES << 1)+(RES << 3)+ numm)。 23 フラグ&&(RESの= - RES)。 24 } 25テンプレート< 26 ボイドライト(T X){ 27 であれば(X < 0)のputchar(' - ')、X = - X。 28 であれば(X> 9)書き込み(X / 10 )。 29 のputchar(Xの%10 + ' 0 ' )。 30 } 31 のconst int型 MAXN = 20010 。 32 のconst int型 N = 60 。 33 CONST INT INF = 0x3f3f3f3f 。 34 CONST INT INF =0x7FFFFFFFで、 35 typedefの長い 長いLL。 36の チャー S [ 60 ]。 37 LL [ 60 ]、P [ 60 ]。 38 int型N、M。 39 LL get_ans(){ 40 のための(int型 I = 1 ; I <= M; iが++ ){ 41 のために(INT J = 52 ;〜jを; j-- ) 42 場合([i]が&(1LL << J )){ 43 であれば(!P [J]){ 44 P [J] =[I]。 45 ブレーク; 46 } 47 [I] ^ = のp [jを]。 48 } 49 } 50 のLLのRES = 0 。 51 のための(int型 J = 52 ;〜J; j-- ) 52 であれば(P [J])RES ++ 。 53 リターン(1LL << RES)%2008 。 54 } 55 のint main()の 56 { 57 58 リード(N)、(m)を読み出します。 59 のための(int型I = 1 ; I <= M; iは++ ){ 60 のscanf(" %sの" 、S); 61 のために(INT J = 0 J ++; J <N ) 62 であれば(sは[J] == ' O ')[I] ^ =(1LL << J)。 63 } 64 ライト(get_ans())。 65 リターン 0 ; 66 }