空集

[leetcode]78

二次信任 提交于 2019-12-01 21:59:49
子集的规律:1,2,3 空集 添加1,形成(空集)-->1 添加2,形成(空集),(1),--> (2),(1,2) 添加3,形成(空集),(1),(2),(1,2)--->(3),(1,3),(2,3),(1,2,3) class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { vector< vector<int> > subset; vector<int> empty; subset.push_back(empty);//空集 for (int i = 0; i < nums.size(); i++)//对于集合中的每一个元素 { vector< vector<int> > subsetTemp = subset; //对于当前的子集,添加进当前的元素 for (int j = 0; j < subsetTemp.size(); j++) subsetTemp[j].push_back(nums[i]); //将添加后的子集再添加到子集中去 for (int j = 0; j < subsetTemp.size(); j++) subset.push_back(subsetTemp[j]); } return subset; } }; Runtime: 4 ms, faster than

redis集合数据类型---SET

◇◆丶佛笑我妖孽 提交于 2019-11-28 05:26:14
一、概述 redis的set是string类型的无序集合 集合成员是唯一的,这就意味着集合中不能出现重复的数据。 集合中最大的成员数为2^32-1(4294967295,每个集合可存储40多亿个成员) 二、键的设置 命令名称: sadd 语法:sadd key member [member……] 功能: 1)将一个或多个member元素加入到集合key当中,已经存在于集合中的member元素将被忽略。 2)假如key不存在,则创建一个只包含member元素做成员的集合。3)当key不是集合类型时,返回一个错误。 返回值: 1)被添加到集合中的新元素的数量,不包括被忽略的元素 三、键的查询 命令名称: scard 语法:scard key 功能: 1)返回集合key的基数(集合中元素的数量)。 返回值: 1)集合的基数。 2)如果key不存在时,返回0 命令名称: smembers 语法:smembers key 功能: 1)返回集合key的所有成员。 2)不存在的key被视为空集合 返回值: 1)集合中的所有成员 命令名称: sismember 语法:sismember key member 功能: 1)判断member元素是否集合key的成员 返回值: 1)如果member元素是集合的成员,返回1. 2)如果member元素不是集合的成员,或key不存在,返回0 命令名称:

8.8爆0祭

怎甘沉沦 提交于 2019-11-26 17:26:25
T3: ... ...不会 选k个集合,每个集合的价值就是线段交集的长度,求最大总价值 不存在两个集合的价值都为空 因为我们可以把一个空集里面的线段只留下1条,其他的放在另一个空集里面 只有一个空集:把前k-1长的线段拿出来(取) 没有空集: 一个性质: 如果有一条线段包含另一条线段,则他们放在同一个集合里面,不对答案有影响 所以只考虑不被任何一条线段包含的线段 按照左端点排序,然后右端点也是递增的(因为只考虑哪些不包含别的线段的线段,如果右端点不递增,就说明里面有包含别的线段的线段) 然后就可以dp了??? 一个集合里的线段应该是连续的一段线段构成的 dp[i][j]:前i条线段分成j组的最大贡献(集合里的线段是连续的) dp[i][j]=max(dp[x][j-1]+r[x+1]-l[i])(r[x+1]>l[i]) 可以单调队列优化...... stdの神仙代码: #include<cstdio> #include<cmath> #include<cstring> #include<cstdlib> #include<algorithm> #include<functional> using namespace std; const int N=6006; typedef long long ll; const ll inf=5e13; int n,m,k,len_n,r;

Dp test solution

谁说我不能喝 提交于 2019-11-26 16:40:22
Dp test solution 按照难易程度排序题解; Problem B Problem Description Tarzan 现在想要知道,区间 [L,R] 内有多少数是优美的。我们定义一个数是优美的,这个数字要满足在它 C 进制下的各位数字之和可以整除这个数字本身。 Tarzan 不会做这道题,他希望你能帮他求出这个问题的答案。 Input format 第一行三个十进制正整数 L,R,C, L 和 R 给的是十进制形式 Output format 一行一个整数表示被认为优美的数的数量 Examples input 1 output 1 5 15 10 7 input 2 output 2 2 100 2 29 Constrains and Notes 对于 30% 的数据满足: R - L ≤ 100000 对于另外 10% 的数据满足: C = 2 对于另外 20% 的数据满足: C = 10 对于 100% 的数据满足: 1 ≤ L ≤ R ≤ 10^18; 2 ≤ C ≤ 15 然后这道题是据说最简单的数位dp (但是我写炸了,只拿了暴力30 反正我太难了; 大致的思路: 如果一味枚举数字的话,我们没有办法边求边取模,从而不能很好的设计状态。因此我们需要考虑优化: 我们可以注意到一个数的数字之和是很小的,那么我们可以枚举这个数字之和sum