Enumerate Combination C(k, n) in a bitset
Suppose n<=32, we can enumerate C(k, n), with bits representing absence or presence, in the following way:
#include <iostream>
#include <vector>
#include <bitset>
using namespace std; bitset<32> getComb(const vector<int> &comb) {
bitset<32> bitcombs;
for (int i=0; i<comb.size(); ++i) bitcombs.set(comb[i], true);
return bitcombs;
} bool nextComb(vector<int> &comb, int n) {
int k = comb.size(), i = k - 1;
++comb[i];
while (i>=1 && comb[i]>=n-k+1+i) ++comb[--i];
if (comb[0] > n-k) return false;
for (++i; i<k; ++i) comb[i] = comb[i-1] + 1;
return true;
} int main() {
int n = 3, k = 2;
vector<int> comb(k);
for (int i=0; i<k; ++i) comb[i] = i;
do {
cout<<getComb(comb).to_ulong()<<endl;
} while (nextComb(comb, n));
return 0;
}
The algorithms works like this when k=4, n=5:
01111->10111->11011->11101->11110
So, could you find the pattern?
Enumerate Combination C(k, n) in a bitset的更多相关文章
- 第k小团(Bitset+bfs)牛客第二场 -- Kth Minimum Clique
		
题意: 给你n个点的权值和连边的信息,问你第k小团的值是多少. 思路: 用bitset存信息,暴力跑一下就行了,因为满足树形结构,所以bfs+优先队列就ok了,其中记录下最后进入的点(以免重复跑). ...
 - 【leetcode】Combination Sum III(middle)
		
Find all possible combinations of k numbers that add up to a number n, given that only numbers from ...
 - 内置函数(sorted、map、enumerate、filter、reduce)
		
1.sorted() 语法: sorted(iterable, cmp=None, key=None, reverse=False) 把iterable中的items进行排序之后,返回一个新的列表,原 ...
 - 扶苏的bitset浅谈
		
bitset作为C++一个非常好用的STL,在一些题目中巧妙地使用会产生非常不错的效果.今天扶苏来分享一点bitset的基础语法和应用 本文同步发布于个人其他博客,同时作为P3674题解发布. 本文感 ...
 - AtCoder Regular Contest 070 D - No Need 想法:利用单调性二分+bitset优化
		
/** 题目:D - No Need 链接:http://arc070.contest.atcoder.jp/tasks/arc070_b 题意:给出N个数,从中选出一个子集,若子集和大于等于K,则这 ...
 - python的enumerate()函数
		
其中的一篇是这样的:一般情况下,如果要对一个列表或者数组既要遍历索引又要遍历元素时,可以用enumerate 比如: for index,value in enumerate(list): ...
 - 2019牛客暑期多校训练营(第二场)D bitset
		
题意 给一个n个结点的带点权的图,找到第k小的团的权值 分析 用bitset表示团的状态,一个结点必须和团里的每个结点都连边才能加进去,所以可以直接用\(\&\)运算来判断一个结点是否能加进去 ...
 - 60第K个排列
		
题目:给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列.按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" &quo ...
 - Codeforces 789e The Great Mixing (bitset dp 数学)
		
Sasha and Kolya decided to get drunk with Coke, again. This time they have k types of Coke. i-th typ ...
 
随机推荐
- CSS3 Flex布局和Grid布局
			
1 flex容器的六个属性 flex实现垂直居中: <div class="box"> <span class="item">< ...
 - callee返回正被执行的Function对象
			
arguments.length是实参长度, arguments.callee.length是形参长度. function fn(a, b, c, d) { console.log(arguments ...
 - Unity使用 16bit 压缩 Texture 颜色能均匀过渡
			
下面是unity自带 16bit 图 的效果,可以看到颜色过度的很不均匀,占用内存 0.5M 如果调成 truecolor 后 颜色过渡很均匀,而内存却占到 1.1 M 讲图片 后缀名改成 ...
 - 让python和C/C++联姻【转】
			
python不在孤单,轻易而举的为python写C/C++第三方库. 我们都知道python很慢,特别是处理大数据的时候,简直慢到极致,如果在知道代码的瓶颈的时候,可以将需要大量计算的数据块放在C/C ...
 - 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---46
			
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
 - 初始化home目录
			
mkdir WORKM 公共资料 科学研究 临时文档 项目开发 正在学习 专职教学 自作文档
 - 51Nod 1272最大距离 (树状数组维护前缀最小值)
			
题目链接 最大距离 其实主流解法应该是单调栈……我用了树状数组. #include <bits/stdc++.h> using namespace std; #define rep(i, ...
 - java 之webmagic 网络爬虫
			
webmagic简介: WebMagic是一个简单灵活的Java爬虫框架.你可以快速开发出一个高效.易维护的爬虫. http://webmagic.io/ 准备工作: Maven依赖(我这里用的Mav ...
 - Docker 创建image
			
images 是containers的基础.每次使用docker run 命令都要指定image. 列出本地images zane@zane-V:~$ docker images REPO ...
 - andriod 支付宝类似界面图片加文字
			
<?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="ht ...