バイナリ列挙

バイナリ列挙

  バイナリ列挙列挙方法は、このような検索の全てに、時には大きすぎるのコレクションとして良い使用であるが、唯一だけで何かまたは他を必要とし、彼らが扱うことができ、検索が半々することができます。

練習

その合計0であるPOJ 2785の4値

書式#include <iostreamの> 
の#include <cstdioを> 
する#include <アルゴリズム>
 使用して 名前空間はstdを、
const  int型 MAXN = 4005 ;
INT [MAXN]、[MAXN] B、[MAXN】C、D [MAXN]、SUM1 [MAXN * MAXN]、SUM2 [MAXN * MAXN]。
INT のmain()
{ 
  int型 I、J、N、CNT1 = 0、CNT2 = 0、ANS = 0 
  scanf関数(" %のD "、&N)
  (i = 1 ; iが<= N; iは++)のscanf(" %D%D%D%D "、および[I]、&B [i]は、&​​C [i]は、&D [I])。
  
  にとって(i = 1 ; iが<= N; iは++ のために(J = 1 ; J <= N; J ++ 
    SUM1 [CNT1 ++] = [I] + B [J]。
  (i = 1 ; iが<= N; iは++ のために(J = 1 ; J <= N; J ++ 
    SUM2 [CNT2 ++] = Cを[I] + D [J]。    
  ソート(SUM2、SUM2 + CNT2)。
  (i = 0 ; I <CNT1 iが++ 
    ANS sum2-(LOWER_BOUND(SUM2、SUM2 + CNT2、-sum1 [I]) - - + = UPPER_BOUND(SUM2、SUM2 + CNT2、-sum1 [i])とSUM2) ; 
  printf(" %d個の\ n " 、ANS)。
  システム(一時停止)。
  リターン 0 ; 
}

 

以上の2019頭の牛オフサマースクールキャンプ(第九のフィールド)ナップザック暗号

おすすめ

転載: www.cnblogs.com/VividBinGo/p/11407988.html