いじりはじめに簡単な質問をBITSET

リンク:https://ac.nowcoder.com/acm/contest/132/C?&headNav=www
出典:牛オフネットワーク

タイトルの周りのシンプルなメッシング
制限時間:C / C ++ 1秒、2秒言語は、他の
スペースの制限: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 }

 

おすすめ

転載: www.cnblogs.com/letlifestop/p/11008098.html