首页 > TAG信息列表 > Subsets

Multidimensional partial sums & sum over subsets & inverse of möbius

高维前缀和 给一个 intrada 性质的问题: 求 \(\displaystyle F[mask] = \sum_{i \subseteq mask} A[i]\) 这个形式看起来会很像一个 and-convolution,虽然并不完全是但这很重要。有个经典的朴素做法是以 \(O(3^n)\) 枚举子集,从这个做法可以看出,\(A[x]\),其中 \(x\) 有 \(k\) 个 off

AT3859 [AGC020E] Encoding Subsets

有一道题 也是字符串的压缩,但是要求的是压缩后的最短长度,然后做法是区间 \(\tt DP\)。故考虑区间 \(\tt DP\)(应该比较显然看出)。 我们先把问题弱化:去掉“包含”的条件,对单个字符串求答案。 考虑如刚刚那题,记录 \(f_{l,r}\) 代表一个区间的答案。 但是这一个不够(我考场上在这里挣扎

ARC143 F Counting Subsets

题意 给定正整数 \(n\),求有多少 \(\{1,2,\dots ,n\}\) 的子集 \(S\) 满足任意一个 \(1\) 到 \(n\) 到整数都能被表示成 \(S\) 的子集和,且方案数小于等于 \(2\)。 对 \(998244353\) 取模。 \(n\le 1500\) 题解 一看到这个,就想到 AHOI 的山河重整,但做法完全不同。 考虑用背包判

LeetCode 78. Subsets

LeetCode 78. Subsets (子集) 题目 链接 https://leetcode.cn/problems/subsets/ 问题描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 输入:nums = [1,2,3] 输出:[[],[1],[2],[

LeetCode 0090 Subsets II

原题传送门 1. 题目描述 2. Solution 1 1、思路分析 回溯法,类似Q78 Subsets,不过要注意去重。 2、代码实现 package Q0099.Q0090SubsetsII; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /* 回溯法 */ public class Solution1 { publ

LeetCode 0078 Subsets

原题传送门 1. 题目描述 2. Solution 1 **1、思路分析 ** 递归使用回溯法。 2、代码实现 package Q0099.Q0078Subsets; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; // Recursive (Backtracking) public class Sol

题解-GYM102978E Edge Subsets

GYM102978E Edge Subsets \(n\) 个点的图 \(m\) 条边 \((u_i, v_i)\) 满足 \(v_i - u_i = A \lor v_i - u_i = B\)。求图的匹配数。 数据范围:\(3\le n \le 200\)。

78. Subsets

如果你碰到排列组合的题,就想想是否可以用backtracking做,然后把模版记住: private List<List<Integer>> res = new ArrayList<>(); public List<List<Integer>> subsets(int[] nums) { backtracking(nums, 0, new ArrayList<>(), res); re

LeetCode - 解题笔记 - 90 - Subsets II

Solution 1 其实本题就是对 78. Subsets 的拓展,在DFS过程中增加一个额外的跳出判定,保证不会出现重复的子集。 这个思路实际上就是3sum里面枚举的思路,也就是先对整个输入序列排序,相同的元素必然会相邻,接着就是对相邻相同元素的判定处理了。 一开始,我以为只要判定相邻相同就跳

Kruskal最小生成树代码

1 // C program for Kruskal's algorithm to find Minimum 2 // Spanning Tree of a given connected, undirected and 3 // weighted graph 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <string.h> 7 8 // a structure

Boruvka最小生成树代码

1 // Boruvka's algorithm to find Minimum Spanning 2 // Tree of a given connected, undirected and 3 // weighted graph 4 #include <stdio.h> 5 6 // a structure to represent a weighted edge in graph 7 struct Edge 8 { 9 int sr

Subsets II

Link: https://leetcode.com/problems/subsets-ii/ Constaint: The array may contains duplicate. The array may not be sorted. Idea The idea is to think about how to avoid adding duplicate values to the subset. We will process the first occurance of a number (

问题 L: Special Subsets

题目描述 Let S be a set composed of all integers from 1 through N. f is a function from S to S. You are given the values f(1),f(2),⋯,f(N) as f1,f2,⋯,fN. Find the number, modulo 998244353, of non-empty subsets T of S satisfying both of the following conditio

78. Subsets

目录题目描述方法1思路代码方法2思路代码 题目描述 Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order(非下降顺序,升序).The solution set must not contain duplicate subsets. For example,If S

「USACO 2021 US Open Platinum」Balanced Subsets

「USACO 2021 US Open Platinum」Balanced Subsets 考虑题目给出的定义对应怎样的图形,显然是一个凸的封闭图形 不妨通过左右边线描述, 1.左边线先左移再右移 2.右边线先右移再左移 不妨直接令\(dp_{i,l,r,f1,f2}\)表示当前第\(i\)行,当前左右边线为\(l,r(l\leq r,\forall j\in[l,r],

istio-gateway-virtualService

部署istio的ingressGateway时, 把istio的IngressGateway理解为 k8s的ingressController 把Gateway理解为 k8s的ingress规则 将k8s的Service通过VirtualService映射到Gateway apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: test-gateway namespace: test

P3067 [USACO12OPEN]Balanced Cow Subsets G

原题链接 折半搜索:一个我做一道相关题能T10次的算法 参考了大佬的题解,本蒟蒻没想出来怎么去重(搜索也没想到...绕在只放第x组的死循环里),但是大佬的题解也是T了第5点,开了O2才过... 思路:        首先明确重复的方法与所取砝码的质量无关,只与取的分别是谁有关.也就是说 测

JAVA解Leetcode 90题 Subsets

JAVA解Leetcode 90题 Subsets 题目描述问题解答 题目描述 Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set). Note: The solution set must not contain duplicate subsets. Example: Input: [1,2,2]

30 Day Challenge Day 14 | Leetcode 78. Subsets

题解 Medium | Backtracking class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { sort(nums.begin(), nums.end()); vector<vector<int>> sols; vector<int> sol; for(i

CF895C Square Subsets

Petya又迟到了...老师给了他额外的任务。对于一些数组a,Petya需要找到从中间选择非空子集,使它们的乘积等于某个整数的平方的方法的数量。 如果这些方法所选择的元素的索引不同,则认为这两种是不同的方法。 因为结果可能很大,结果需要\(mod \; 10^9+7\) 考虑到完全平方数只和质因子次

【leetcode_medium】90. Subsets II

leetcode_medium_array problem 90. Subsets II solution #1: 非递归; code   注意: 1) 先排序,后一步步添加子集; 2) 空集是任何集合的子集; 3) 重复元素的处理; solution #2: 递归; code   参考 1. leetcode_90. Subsets II; 2. Grandyang; 完

Codeforces Round #448 (Div. 2):C题Square Subsets——线性基|状压dp

题目链接:https://codeforces.com/contest/895/problem/C  题意:给你n个数,每个数<=70,问有多少个集合,满足集合中所有数相乘是个完全平方数(空集除外) 题解:比赛时对这个一点思路都没有,自闭了,但是观察到数小,考虑可以用状压dp来求,但是发现很不好想,也不好调,赛后意外发现学长写的这个

子集——力扣(python)

第一种思路:直接遍历,遇到一个数就把所有子集加上该数组成新的子集,遍历完毕即是所有子集 class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: res = [[]] for i in range(len(nums)-1,-1,-1): for subset in res[:]: res

[CF895C]Square Subsets

题意简述 给定\(n\)个数\((n\le10^5 )\),每个数\(\le70\),在其中选择一个子集,求使其乘积为完全平方数的方法有多少种。 传送门 题解 一道状压\(dp\)好题。 注意到此题\(a_i\leq70\), 并且一个数是否为完全平方数只与它的质因子奇偶性有关,所以\(n\leq10^5\) 是废话,我们只需要用一个桶

Leetcode78: 子集

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] public List<List<Integer>> subsets(int[] nums) { List<List<Integer>>