데부과 꽃 (포함 및 제외)

주제 :

데부는 N 상자가, i 번째 상자가아이의 ramiflorous.

하나와 꽃 상자에 같은 색상, 다른 상자에서 서로 다른 색의 꽃.

데부 프로그램의 얼마나 많은 종류의 총을 추구 꽃 꽃다발 M 지점을 선택이 상자에서.

각 색상의 두 가지의 꽃 꽃다발의 수가 동일 할 경우, 나는이 꽃 같은 프로그램 생각합니다.

결과는 필요 10 . 9 + 7 만 모듈의 출력 후에.

입력 형식

첫 번째 라인은 두 정수 N과 M. 포함

두 번째 행은 N 나타내는 공간 구분 정수 포함 . 1 , 2 , ... , N을 .

출력 형식

출력 프로그램의 수를 나타내는 정수 10 . 9 + 7 모듈로 109 + 7의 결과.

데이터 범위

1 N (20) 1≤N≤20,
0 M 10 14 0≤M≤1014,
0 10 12 0≤Ai≤1012을

샘플 입력 :

3 5
1 3 2

샘플 출력 :

3

보고서 문제 해결 :
조금 나중에 갱스터 블로그를 포함 배제의 과정을 참조하는 방법을 찾기 시작하지 않았다,이 질문의 목적은 진정한 의미를 이해하는 것이 었습니다!

첫 번째 시나리오는 모든 Fi를 제한하지 않는 경우.
그래서 응답 따르면 C (S, N + S- 인 1) 의 다수의 세트의 조합 무한한 
상황에서 우리가 불법적로부터 응답을 감산 할 필요가있다.
합법적되지 케이스 XI> fixi> 과학의입니다.
AiAi의 XI> fixi> 과학 솔루션을 집합입니다.
| 아이 | = C (S- ( 인터넷 + 1), N + S-1- (FI + 1))
우리는 이전에 그것을 인터넷 1fi + + 1 개 요소 넣어에 대응한다.
마찬가지로 | Ai⋂Aj | = C (S- ( 인터넷 + 1) - (FJ + 1), N + S-1- (FI + 1) - (FJ + 1))
를 포함 및 제외하고 응답하도록되어있어서
C (S, S + N-1 ) -Σ1≤i≤n | 아이 | + Σ1≤i <j≤n | Ai⋂Aj | ... ( 생략)

우리는 국가에 의해 각 주를 대표하는 압축 할 수 있습니다.
각 상태에 앞서 전처리 여러 요소를 넣을 필요가있다.
마지막으로 스캔 통계가 대답합니다.
O의 시간 복잡도 (2nn)

 

AC 코드 :

1 #INCLUDE <. 비트 / stdc ++ H>
 2  사용  스페이스 성병;
3 타입 정의  LL;
4  
5  CONST의  INT의 개조 1E9 + = 7 ;
6  INT의 N 림;
7  LL의, ANS;
(8) LL의 F [ 30 ], INV [ 30 ], 합계 [ 1100000 ];
9  의 INT 는 num [ 1100000 ];
10  LL 빗 (LL의 N, LL의 m)
 (11) { // 求解C (N, M)    
(12)      의 경우 (m이 < 0 )
 13         반환  0 ;
14      LL의 RET = 1 ;
(15)      에 대한이 (LL 난 m + = 1 ; i가 <= N; I ++ )
 16          RET RET = * (I의 %의 개조) 개조 %; // N! / m! 
(17)      에 대한이 ( int로 I = 1 ; I <= 나노 미터; I ++ )
 18          RET RET = *의 INV [I] 개조 %; // (㎚)! 
19      리턴 RET;
20  }
 21  
22  INT ) (주
 23  {
 24      CIN >> N >> S; // n은个盒子,挑选의朵花
(25)      에 대한 ( INTI = 0 ; I는 N <; I는 ++ )
 (26)는          CIN >> F [I]; // 박스의 N 입력 꽃 번호 
27      [INV의 . 1 ] = 1. ,
 28       ( INT I = 2 , I는 = N + < 1. ; I ++ )
 29          INV [I] = (INV는 [I은 MOD는 %] * (MOD-MOD / I)) MOD %의가; // 마법 플레이 테이블 해결 역원 
30      임 = ( 1. << N-) - 1이다. ] / / 이진 열거 쉽게 발수 용량 
(31)은      위해 ( int로 난 = 0 ; I는 <= I 임은 ++ )
 32      {
 33 인          위한( 지능 J = 0 ; J <N-, J ++ )
 (34)가          {
 35              IF (I & ( (1). << J))
 36              {
 37                  SUM [I]는 = F + [J] + 1이다. ] // 미리 넣어 인터넷 + 1 번째 소자 
(38)가                  NUM [I]는 ++; // 발생 수의 태그 
39              }
 40          }
 41      } // 가지며, 1,2-에서, 모든 상태를 처리하고 -> N- 
42 인      위해 ( int로 = I를 0 ; I은 <= 임; I ++ )
 (43)는      {
 44 인          경우(NUM [I] % 2 )
 45              의 ANS = (ANS 빗 (S + N- 1 -sum은 [I], S-합 [I]) + 모드) % 개조;
46          다른 
47              의 ANS = (ANS + 빗 (S + N- 1 -sum [I], S-합 [I])) % 개조;
48      }
 49      COUT << ANS << ENDL;
50 }

 



추천

출처www.cnblogs.com/Spring-Onion/p/11310470.html