1つ の#define IOSはios_base :: sync_with_stdio(0)。cin.tie(0)。 2の#include <cstdioを> // のsprintf islowerはisupper 3の#include <cstdlib> // のmalloc出口STRCATのitoaはシステム( "CLS") 4の#include <入出力ストリーム> // 対 5の#include <fstreamの> // freopenは(「C :\\ユーザー\\ 13606 \\デスクトップ\\草稿.TXT」、 "R"、STDIN); 6の#include <ビットセット> 7 // の#include <地図> 8 // の#include <unordered_map> 9の#include <ベクトル> 10の#include <積層> 12の#include < 文字列・H> // はstrstr SUBSTR 13の#include < ストリング > 14の#include <TIME.H> // にsrand(((符号なし)時間(NULL)))。シードN =ランド()%10から0〜9。 15の#include <cmath> 16の#include <両端キュー> 17の#include <キュー> // PRIORITY_QUEUE <整数、ベクトル<整数>、大きな<整数>> Q。// 以下 18の#include <ベクトル> // emplace_back 19 // の#include <math.h>の 20 // の#include <WINDOWS.H> // (+ LEN)逆。〜!〜!床 21の#include <アルゴリズム> // ソート+ユニーク:SZ =一意(B + 1、B + N + 1) - (B + 1)+ nth_element(第一、第nは、最後に、比較) 22 使用 名前空間 STDを、// next_permutation(A + 1、A + 1個の+ N)。// prev_permutation 23の // ****************** 24の int型の ABS面(INT A)。 25 INT lowbit(INT N)。 26 INT Del_bit_1(int型N); 27 int型 MAXX(int型、int型のB)。 28の int型のミネソタ州(int型、int型のB)。 29 ダブル fabss(ダブルA)。 30 ボイド swapp(INT&A、INT&B)。 31 clock_t __STRAT、__ END; 32 ダブル__TOTALTIME。 33 ボイド _MS(){__ STRAT = クロック();} 34 空隙 _ME(){__ END =クロック(); __ TOTALTIME =(ダブル)(__ END -__ STRAT)/ CLOCKS_PER_SEC; COUT << " 時間:" << __ TOTALTIME << " S " << ENDL;} 35 // *********************** 36 の#define RINTは整数レジスタ 37 の#defineを foは(A、B、C)(RINTのA = B; <= C; ++ A)のための 38 の#define FR(A、B、C)のための(RINTのA = B ;> = C; - A) 39 の#define MEM(A、B)のmemset(A、B、はsizeof(A)) 40 の#define PRのprintf 41回 の#define SCのscanf 42回 の#defineのLS RT << 1 43 #定義のRS RT << 1 | 1 44 typedefの長い 長いLLを。 45 CONST ダブル E = 2.718281828 。 46 のconst ダブル PI = ACOS( - 1.0 )。 47 // CONST LL = INF(1LL << 60); 48 のconst int型 INF =(1 << 30 ); 49 CONSTは ダブル ESP = 1E9 ; 50 のconst int型 MOD =(INT)+ 1E9 7。 、 51で のconst int型 N =(INT)6E6 + 10 ; 52は 53であり、 int型[N]; 54である INT DP [N] [ 40 ]; // iとビットの異なるサブセットのみマスク表し、 55 56は 、INT ()主に 57です { 58 int型のn; 59 SC(" %のD "、&N) 60 のために(int型 I = 1 ; ++; iが<= N I) 61 SC(" %のD "、&[i])と、DP [i]が[ 0 ] = [I]。 62 のためには、(int型 i = 0 ; iが=(< 1 << 21); ++ I) 63 { 64 のための(int型 J = 1 ; J <= 22 ; ++ j)は 65 { 66 int型の POS = J- 1 。 67 場合((I >> POS)&1)DPは、[I] [j]はDPを= [I]、[J- 1 ] + DP [I ^(1 << POS)] [J- 1 ]。 68 他の DP [I] [J] = DP [i]は[J- 1 ]。 69 } 70 } 71 リターン 0 。 72 } 73 74 / * ******************************************** **************************************** * / 75 76 int型 MAXX(int型、int型B) 77 { 78 リターン A> B?A:B; 79 } 80 81 ボイド swapp(INT&A、INT&B) 82 { 83 ^ = B ^ = A ^ = B。 84 } 85 86 int型 lowbit(int型N) 87 { 88 リターン N&( - N)。 89 } 90 91 INT Del_bit_1(int型N) 92 { 93 リターン N・(N- 1); 94 } 95の 96 int型の ABS面(INT A) 97 { 98 リターン A> 0: - ? 。 99 } 100 101 ダブル fabss(ダブルA) 102 { 103 戻り A> 0: - ? 。 104 } 105 106 INTミネソタ州(INT A、INT B) 107 { 108 リターン <B?A:B; 109 }