[CodeForces 165E] Compatible Numbers(상압 DP) | 오답장

9688 단어 [오답장]#상압DP

문서 목록

  • 제목
  • 분석
  • 코드
  • 제목.


    [CodeForces 165E] Compatible Numbers

    분석하다.


    S-3 - S-\{i\} S-3 {i}에 대한 답변을 S-3 S에 보내면 됩니다.

    코드

    #include 
    #include 
    #include 
    
    const int MAXN = 1000000;
    const int MAXA = 4000000;
    const int LOG = 22;
    
    int N;
    int A[MAXN + 5];
    
    int Num[(1 << (LOG + 1)) + 5];
    
    int main() {
    	scanf("%d", &N);
    	memset(Num, -1, sizeof Num);
    	for (int i = 1; i <= N; i++) {
    		scanf("%d", &A[i]);
    		Num[A[i]] = A[i];
    	}
    	int lim = (1 << (LOG + 1)) - 1;
    	for (int i = 1; i <= lim; i++) {
    		if (~Num[i]) continue;
    		for (int j = 0; j <= LOG; j++)
    			if (i & (1 << j))
    				if (~Num[i ^ (1 << j)]) {
    					Num[i] = Num[i ^ (1 << j)];
    					break;
    				}
    	}
    	for (int i = 1; i <= N; i++) {
    		int s = 0;
    		for (int j = 0; j <= LOG; j++)
    			if (!(A[i] & (1 << j)))
    				s |= (1 << j);
    		printf("%d ", Num[s]);
    	}
    	return 0;
    }
    

    좋은 웹페이지 즐겨찾기