hdoj жизнь непересекающихся посаженные типа 1829 жука

Тема ссылки: http://acm.hdu.edu.cn/showproblem.php?pid=1829

И набор проверки приложений, чтобы обнаружить, есть ли противоречие, которое не должно быть двух непересекающихся множеств с пересечением. Эта проблема имеет два таких насекомых пола, каждая операция т раз, каждый раз, когда данный (а, б), если а и Ь появился тот же пол ошибки, что было определено, что существуют две секс ошибка. Моя стратегия также два набора, с дизъюнктным-набором для поддержания отношений между этими двумя группами. Посмотрите на конкретные доказательства моего предыдущего блога, доказательство правильности такого подхода.

Код выглядит следующим образом:

1 #include <бит / STDC ++ ч.>
 2 ЬурейеЕ беззнаковое INT UI;
3 ЬурейеЕ долго  долго LL;
4 ЬурейиЙ без знака длиной  длинного Ull;
5  #define пф Printf
 6  #define MEM (а, б) MemSet (а, б, SizeOf (а))
 7  #define prime1 1e9 + 7
 8  #define prime2 1e9 + 9
 9  #define пи 3,14159265
 10  #define lson л, середина, к.т. << 1
 11  #define rson середины + 1, г, к.т. << 1 | 1
 12  #define Scand (х) зсапЕ ( "% LLF", & х) 
13  #define F (я, а, б) для (INT I = а, я <= Ь; я ++)
 , 14  #define сканирование (а) зсапЕ ( "% d", & а)
 15  #define тр (а, б) make_pair ((а), (б))
 16  #define Р пара <Int, Int>
 17  #define ДБГ (арг) соиЬ << # арг << ":" << арг << епсИ;
18  #define инф 0x3f3f3f3f
 19  Const  INT maxn = 2E6 + 10 ;
20  INT п, т, т;
21 инлайн INT чтения () {
 22      INT ANS = 0 , т = 1 ;
23      символ CH = GetChar ();
24 в      то время как (isdigit (ч)!) { Если (ч == ' - ' ) ш = - 1 ; ч = GetChar ();}
 25 ,      а (isdigit (ч)) ANS = (ANS << 3 ) + (ANS << 1 ) + CH- ' 0 ' , ч = GetChar ();
26      возвратных ансы * ш;
27  }
 28  INT F [maxn], ранг [maxn];
29  BOOL флаг;
30  недействительными инициализации ()
 31  {
 32      F (я, 1 , 2 * п) П [г] = я, ранг [I] = 0;
33      флаг = ложь ;
34  }
 35  INT находка ( INT х)
 36  {
 37 ,      если (х == Р [х]) возвращение х;
38      возврата Р [х] = находка (Р [х]);
39  }
 40  пустот Союз ( INT х, INT у)
 41  {
 42      INT FX = найти (х);
43      INT FY = найти (у);
44 ,      если (== FX FY) возвращение ;
45 ,      если(ранг [FX] <ранг [FY]) F [FX] = FY;
46      еще 
47      {
 48          F [FY] = FX;
49 ,          если (ранг [FX] == ранг [FY]) ранг [FX] ++ ;
50      }
 51  }
 52  BOOL же ( INT х, INT у)
 53  {
 54      возврата находка (х) == найти (у);
55  }
 56  INT основных ()
 57  {
 58      // freopen ( "input.txt", "г", стандартный ввод);
59      // freopen ( "output.txt", "ш", стандартный вывод); 
60     СТД :: ИОС :: sync_with_stdio ( ложные );
61      т = следующим образом ();
62      INT CNT = 0 ;
63      F (тт, 1 , т)
 64      {
 65          п = следующим образом (), т = следующим образом ();
66          инициализации ();
67          INT A, B;
68          F (я, 1 , м)
 69          {
 70              а = следующим образом (), Ь = следующим образом ();
71 ,              если ( то же самое (а, б) || же (а + п, б + п)) флаг = 1 ; 
72              еще 
73              {
 74                 Союз (А, В + п);
 75                  объединение (+ п-А, В); // (а, б) в другой набор среди 
76              }
 77          }
 78          PF ( " Сценарий #% D: \ n- " , TT),
 79          IF (In Flag) PF ( " обнаружили подозрительные ошибки \ n-! " );
 80          в еще PF ( " нет ошибок не обнаружено подозрительное \ n-! " );
 81          PF ( " \ п " );
 82      }
 83   }

 

 

рекомендация

отwww.cnblogs.com/randy-lo/p/12565411.html