リンク:https://ac.nowcoder.com/acm/contest/132/C?&headNav=www
出典:牛オフネットワーク
タイトルの周りのシンプルなメッシング
制限時間:C / C ++ 1秒、2秒言語は、他の
スペースの制限:C / C ++ 32768K、他の言語は65536kも
64ビットIOフォーマット:LLD%
スペースの制限:C / C ++ 32768K、他の言語は65536kも
64ビットIOフォーマット:LLD%
タイトル説明
数nが存在し、i番目のXであるI
X Iは、 [LをとることができるIは、R I ]任意の値です。
セットS = [シグマX I 2 S =Σxi2、種S.の数を見つけます具体的なアイデア:
ビットセット
00011ビットセットが存在し、第二の数は、(バイナリではない)が存在する最初のそのような数を表します。
そして、たまにうまく追加するに基づいて計算しました。
1つの#include <ビット/ STDC ++ H> 2の#include <ビットセット> 3 使用して 名前空間STDを、 4位LL定義長い 長い 5位LL_inf(1LL <<定義60 ) 6位INF定義0x3f3f3f3f3 7 のconst int型 MAXN = 1E6 + 20 。 8 のconst int型 MOD = 1E9 + 7 。 9ビット集合<MAXN> ANS。 10ビット集合<MAXN> TMP。 11 のint main()の 12 { 13 INT N。 14 のscanf(" %d個"、&N) 15 INT ST、エド。 16の ANS [ 0 ] = 1 。 17 のために(int型 i = 1 ; iが<= N; iが++ ) 18 { 19 のscanf(" %D%dの"、およびST&ED)。 20 tmp.reset()。 21 のための(int型 J = ST; J <=エドあり、j ++ ) 22 { 23 TMP | =アンス<< jは*のJ; 24 } 25 ANS = TMP。 26 } 27 COUT << ans.count()<< ENDL。 28 リターン 0 ; 29 }