当前位置: 首页>>代码示例>>C++>>正文


C++ bitset::count方法代码示例

本文整理汇总了C++中bitset::count方法的典型用法代码示例。如果您正苦于以下问题:C++ bitset::count方法的具体用法?C++ bitset::count怎么用?C++ bitset::count使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在bitset的用法示例。


在下文中一共展示了bitset::count方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: printf

    template<class V> void print_container(V& container, bitset<MAX_BITS_SIZE>& flag, bool reverse, bool is_servercmp)
    {
      if (reverse)
      {
        flag.flip();
      }
      typename V::iterator it = container.begin();

      if (!is_servercmp) // print different block
      {
        int32_t count = static_cast<int32_t> (flag.count());
        for (int32_t i = 0, c=0; (it != container.end()) && (count > 0); i++, it++)
        {
          if (flag.test(i))
          {
            cout << *it ;
            if((++c) % 20 == 0)
              cout<<"\n";
            else
              cout<<" ";
            count--;
          }
        }
        printf(" [%d]\n", static_cast<int32_t>((flag.count() - count)));
      }
      else
      {
        for (int32_t i = 0; it != container.end(); i++, it++)
        {
          printf("%23s%c", tbsys::CNetUtil::addrToString(*it).c_str(),
              suffix(flag[i]));
        }
        printf(" [%zd]\n", container.size());
      }
    }
开发者ID:keoyeop,项目名称:tfs,代码行数:35,代码来源:cmp_factory.cpp

示例2: main

int main(){
    CPPinput;
    int n,k; cin>>n>>k;
    for(int i=1;i<=4;++i)for(int j=1;j<=n;++j)cin>>mp[i][j];
    vector<tuple<int,int,int>> ans;
    while(bk.count()<k){
        // for(int i=1;i<=4;++i){ for(int j=1;j<=n;++j)cout<<mp[i][j]<<" "; cout<<endl; } cout<<endl;
        {
            for(int i=1;i<=n;++i){
                if(mp[2][i]==mp[1][i] && mp[1][i]){
                    ans.eb(mp[2][i],1,i);
                    bk[mp[2][i]]=1;
                    mp[2][i]=0;
                }
                if(mp[3][i]==mp[4][i] && mp[4][i]){
                    ans.eb(mp[3][i],4,i);
                    bk[mp[3][i]]=1;
                    mp[3][i]=0;
                }
            }
        } {
            int ex=-1,ey=-1;
            for(int i=2;i<=3;++i)for(int j=1;j<=n;++j)if(!mp[i][j])ex=i,ey=j;
            if(ex==-1)JIZZ("-1\n");
            int nx=ex,ny=ey;
            vector<pii> cc; cc.eb(nx,ny);
            if(nx==2){ while(ny<n)cc.eb(nx,++ny); }
            else{ while(ny>1)cc.eb(nx,--ny); }
            if(nx==2)cc.eb(++nx,ny);
            else cc.eb(--nx,ny);
            if(nx==2){ while(ny<n)cc.eb(nx,++ny); }
            else{ while(ny>1)cc.eb(nx,--ny); }
            if(nx==2)cc.eb(++nx,ny);
            else cc.eb(--nx,ny);
            if(nx==2){ while(ny!=ey)cc.eb(nx,++ny); }
            else{ while(ny!=ey)cc.eb(nx,--ny); }
            cc.pop_back();
            for(int i=0;i<cc.size()-1;++i){
                if(mp[cc[i+1].first][cc[i+1].second]){
                    // cout<<"move from "<<cc[i+1]<<" to "<<cc[i]<<endl;
                    ans.eb(mp[cc[i+1].first][cc[i+1].second],cc[i].first,cc[i].second);
                    mp[cc[i].first][cc[i].second]=mp[cc[i+1].first][cc[i+1].second];
                    mp[cc[i+1].first][cc[i+1].second]=0;
                }
            }
        }
    }
    if(bk.count()!=k)JIZZ("-1\n");
    cout<<ans.size()<<endl;
    for(auto &t:ans){
        int a,b,c;
        tie(a,b,c)=t;
        cout<<a<<" "<<b<<" "<<c<<'\n';
    }
}
开发者ID:edisonhello,项目名称:cpp,代码行数:55,代码来源:995A_tut.cpp

示例3: dfs

void dfs(int nowlen,int laststr){
	int rest=f.count();
	if(nowlen+rest>=anslen)
		return;
	if(!rest){
		memcpy(ans,now,sizeof(now));
		anslen=nowlen; return;
	}
	static const int z=pow(c,l-1);
	int newstr=(laststr%z)*c;
	if(nowlen<l-1){
		for(int k=0;k<c;++k,++newstr)
			now[nowlen]=k,dfs(nowlen+1,newstr);
		return;
	}
	for(int k=0;k<c;++k,++newstr)	
		if(f.test(newstr)){
			now[nowlen]=k;	
			f.reset(newstr);
			dfs(nowlen+1,newstr);
			f.set(newstr);
		}
	newstr=(laststr%z)*c;
	for(int k=0;k<c;++k,++newstr)
		if(!f.test(newstr))
			now[nowlen]=k,dfs(nowlen+1,newstr);
}
开发者ID:cjsoft,项目名称:inyuyao,代码行数:27,代码来源:dfs.cpp

示例4: main

int main() {
end:

    while (cin >> n >> m) {
        v.clear();
        getline(cin, s);
        fill(v.begin(), v.end(), vector<int>());
        awake.reset();

        getline(cin, s);

        for (char c : s) {
            awake.set(c - 'A');
        }

        for (int i = 0; i < m; i++) {
            getline(cin, s);
            int a = s[0] - 'A', b = s[1] - 'A';
            v[a].push_back(b);
            v[b].push_back(a);
        }

        int years = 0;

        while (awake.count() < n) {
            vector<int> wokeup;

            for (int cur = 0; cur < 26; cur++) {
                if (awake[cur]) {
                    continue;
                }

                int awake_neighbors = 0;

                for (int neighbor : v[cur]) if (awake[neighbor]) {
                        awake_neighbors++;
                    }

                if (awake_neighbors >= 3) {
                    wokeup.push_back(cur);
                }
            }

            if (wokeup.empty()) {
                cout << "THIS BRAIN NEVER WAKES UP\n";
                goto end;
            }

            for (int i : wokeup) {
                awake.set(i);
            }

            years++;
        }

        cout << "WAKE UP IN, " << years << ", YEARS\n";
    }

    return 0;
}
开发者ID:Blimeo,项目名称:Contests,代码行数:60,代码来源:10507.cpp

示例5: main

int main()
{
    ifstream f("plimbare.in");
    ofstream g("plimbare.out");
    f>>n; m=(n*(n-1))/2;
    for(int i=0; i<m; ++i) {
      int a,b; f>>a>>b;
      ma[a][b]=it[a][b]=1;
    }
    for(int k=1; k<=n; ++k) for(int i=1; i<=n; ++i) for(int j=1; j<=n; ++j)
        it[i][j]|=(it[i][k]&it[k][j]);

    for(int i=1; i<=n; ++i) if(!fol[i]) {
      int dc=1; fol[i]=1;
      for(int j=i+1; j<=n; ++j) if(it[i][j] && it[j][i]) {
        ++dc;
        fol[j]=1;
      }
      if(dc>dmax) dmax=dc,fr=i;
    }
    fol&=0;
    dfs(fr,fr);
    fol&=0;
    fol[fr]=1;
    for(int i=nxt[fr];i!=fr; i=nxt[i]) fol[i]=1;
    for(;fol.count()<dmax;) {
      for(int i=nxt[fr];i!=fr; i=nxt[i]) s(i);
      s(fr);
    }
    g<<dmax<<'\n'<<fr<<' ';
    for(int i=nxt[fr]; i!=fr; i=nxt[i]) g<<i<<' ';
    return 0;
}
开发者ID:S7012MY,项目名称:Surse,代码行数:33,代码来源:main.cpp

示例6: main

int main()
{
    freopen("milk3.in","r",stdin);
    freopen("milk3.out","w",stdout);
    
    for (int i = 0; i < 3; ++i)
         cin>>cap[i];
    
    int init[3];
    init[0] = init[1] = 0;
    init[2] = cap[2];
    dfs(init);

    int space_num = ans.count() - 1;
    for (int i = 0; i < 21; ++i)
    {
        if( ans.test(i) && space_num )
        {
            cout<<i<<" ";
            space_num--;
        }
        else if(ans.test(i))
            cout<<i<<endl;
    }
    
    return 0;	  
}
开发者ID:Senon-Liu,项目名称:MyUSACO,代码行数:27,代码来源:milk3.cpp

示例7: main

int main()
{
    freopen("holstein.in","r",stdin);
    freopen("holstein.out","w",stdout);
    scanf("%d",&v);
    for (int i=0;i<v;i++){
        scanf("%d",&cow[i]);
    }
    scanf("%d",&g);
    for (int i=0;i<g;i++){
        for (int j=0;j<v;j++){
            scanf("%d",&vi[i][j]);
        }
    }

    //枚举每一种饲料喂养
    bool f;
    for (int i=0;i<(1<<(g));i++){
        bitset<16> tmp(i);
        for (int j=0;j<g;j++){
            if (tmp.test(j)==true){
                for (int z=0;z<v;z++){
                    feed[z] += vi[j][z];
                }
            }
        }
        f = true;
        for (int z=0;z<v;z++){
            if (feed[z]<cow[z]){
                f = false;
                break;
            }
        }
        memset(feed,0,sizeof(feed));
        //在个数相同的情况下,字典序小的优先,所以把bitset还原回数字之后小的优先
        if (f&&((miniset.count()==0||tmp.count()<miniset.count())||(tmp.count()==miniset.count()&&tmp.to_ulong()<miniset.to_ulong()))){
            miniset = tmp;
        }
    }
    printf("%d",miniset.count());
    for (int i=0;i<g;i++){
        if (miniset.test(i))
        printf(" %d",i+1);
    }
    printf("\n");
    return 0;
}
开发者ID:LiWeiJie,项目名称:ACM-Code,代码行数:47,代码来源:holstein.cpp

示例8: dfs

 void dfs(vector<vector<int>>& vv, bitset<maxNUM>& bt, int pos, int n, int k) {
     if(pos > n || bt.count() > k) return ;
     if(bt.count() == k && pos == n){
         string ans = bt.to_string();
         vector<int> vt;
         vt.clear();
         for(int i = 0; i < n; i++) {
             if(ans[i] == '1') vt.push_back(i + 1);
         }
         vv.push_back(vt);
         return ;
     }
     bt.flip(maxNUM - pos - 1);
     dfs(vv, bt, pos + 1, n, k);
     bt.flip(maxNUM - pos - 1);
     dfs(vv, bt, pos + 1, n, k);
 }
开发者ID:maybeluo,项目名称:leetcode,代码行数:17,代码来源:77_Combinations.cpp

示例9: main

int main() {
	int T;
	scanf("%d", &T);
	for (int i = 0; i < N; ++ i) {
		blk[i] = i / BLKSZ;
	}
	while (T --) {
		scanf("%d%d", &n, &m);
		lastans = 0;
		for (int j = 0; j < 5; ++ j) {
			for (int i = 0; i <= blk[n]; ++ i) {
				bt[j][i].reset();
			}
		}
		for (int i = 0; i < n; ++ i) {
			for (int j = 0; j < 5; ++ j) {
				scanf("%d", &p[j][i].d);
				p[j][i].id = i;
			}
		}
		for (int j = 0; j < 5; ++ j) {
			sort(p[j], p[j] + n);
		}
		for (int j = 0; j < 5; ++ j) {
			for (int i = 0; i < n; ++ i) {
				bt[j][blk[i]].set(p[j][i].id);
				mx[j][blk[i]] = p[j][i].d;
			}
			for (int i = 1; i <= blk[n - 1]; ++ i) {
				bt[j][i] |= bt[j][i - 1];
			}
		}
		scanf("%d", &m);
		while (m --) {
			for (int j = 0; j < 5; ++ j) {
				scanf("%d", &lim);
				ans[j].reset();
				lim ^= lastans;
				int l = 0;
				while (l <= blk[n - 1] && mx[j][l] <= lim) {
					l ++;
				}
				ans[j] = l > 0 ? bt[j][l - 1] : 0;
				for (int i = l * BLKSZ; i < n; ++ i) {
					if (p[j][i].d > lim) break;
					ans[j].set(p[j][i].id);
				}
			}
			ans1.set();
			for (int j = 0; j < 5; ++ j) {
				ans1 &= ans[j];
			}
			lastans = ans1.count();
			printf("%d\n", lastans);
		}
	}
	return 0;
}
开发者ID:SyncShinee,项目名称:ACM-ICPC,代码行数:58,代码来源:1010.cpp

示例10: dfs

void dfs(int dep, int& ans, bitset<2000> b) {
    if(dep >= ans || dep > 10) return;
    if(b.count() == m) {ans = dep; return;}
    for(int i = 0; i < m; ++i) {
        if(b[i] == 1) continue;
        int u = edge[i].u, v = edge[i].v;
        dfs(dep + 1, ans, b | sta[u]);
        dfs(dep + 1, ans, b | sta[v]);
        break;
    }
}
开发者ID:TaoSama,项目名称:ICPC-Code-Library,代码行数:11,代码来源:BNUOJ+51645.cpp

示例11: verif

int verif(int k,int d){
    bs&=0;
    for(int i=1;i<=k;++i){
        int cc=a[i];
        for(int j=1;j<=m[cc][0];++j){
            bs[m[cc][j]]=1;
        }
    }
    if(bs.count()==d)return 1;
    return 0;
}
开发者ID:S7012MY,项目名称:Surse,代码行数:11,代码来源:main.cpp

示例12: search

 int search(bitset<10> &digits, int n, int depth) {
     int count = 0;
     
     if (digits.count() > n)
         return 0;
     count++;
     for (int d = 0; d <= 9; d++) {
         // number cannot start with 0
         if (depth == 0 && d == 0)
             continue;
         if (digits[d] == false) {
             digits[d] = true;
             count += search(digits, n, depth+1);
             digits[d] = false;
         }
     }
     return count;
 }
开发者ID:hkoehler,项目名称:LeetCode,代码行数:18,代码来源:countingNumbersWithUniqueDigits.cpp

示例13: ulam

i64 ulam(const int v, const i64 target)
{
    //the first fact is that the second even number is 2v+2
    ulambit.reset();
    //create v+1 bit for 2v+3,..., 4v+3; 
    int n1 = v/2;
    for(unsigned int i = 0; i<= v;++i){
        ulambit.set(i);
    }
    i64 period = 0;
    i64 span = 0;
    do{
        int lastbit = ulambit[0];
        int firstbit = ulambit[v];
        int result = lastbit^firstbit;
        ulambit <<= 1;
        ulambit.set(0, result);
        ulambit[v+1] = 0;
        if(result) 
            ++period;
        span += 2;
    }while(ulambit.count()<v+1);
    //printf("%d %lld %lld\n", v, period, span);
    i64 nres = (target-3)%period;
    i64 mult = (target-3)/period;
    ulambit.reset();
    ulambit.set(0);
    i64 span0 = span;
    span = v;
    period = 0;
    do{
        if(period == nres) break;
        int lastbit = ulambit[0];
        int firstbit = ulambit[v];
        int result = lastbit^firstbit;
        ulambit <<= 1;
        ulambit.set(0, result);
        ulambit[v+1] = 0;
        if(result) 
            ++period;
        span += 2;
    }while(true);
    return mult*span0+span;
}
开发者ID:lld2006,项目名称:my-c---practice-project,代码行数:44,代码来源:167.cpp

示例14: solve

int solve() {
	int ans = inf;

	for (int i = 0; i < (1<<K); i++) {
		int cnt = 0;
		s.reset();

		for (int j = 0; j < K; j++) {
			if (i&(1<<j)) {
				cnt++;
				s |= p[j];
			}
		}

		if (s.count() == N * N - K)
			ans = min(ans, cnt);
	}
	return ans == inf ? -1 : ans;
}
开发者ID:JeraKrs,项目名称:ACM,代码行数:19,代码来源:hdu4462.cpp

示例15: backtrack

/*
 * Backtack through all unused nodes, adding their
 * neighbors to the used set each call such that
 * we find the maximal independent set
 */
void backtrack(int i, bitset<100> used) {

  // Base Case, we have explored all nodes
  if(used.count() == n) {
    if(current.count() >= solution.count()) {
      // We found a bigger Independent Set.
      solution = current;

    }
  }
  // Recursive Case, keep exploring
  for (int j = i; j < n; ++j) {
    if(!used[j]) {
      current[j] = 1;
      backtrack(j+1, used | adjMatrix[j]);
      current[j] = 0;
    }
  }
}
开发者ID:MarkGalloway,项目名称:uva_judge,代码行数:24,代码来源:UVa00193.C


注:本文中的bitset::count方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。