- 2024-11-21枚举子集的方法
可能在状压dp中运用的会比较多——首先直接看代码(再来解释):for(intj=st,t;j;j=(j-1)&st)t=st^j;其中,st是枚举的集合,j是子集,t是j对于st的补集。但是要注意这个办法没有枚举空集,需要自行处理。考虑证明一下:我们分三步,分别证明正确性、不重、不漏:正确性由于这个j=(j-1)&st,所
- 2024-11-14题解:P7836 「Wdoi-3」夜雀 collecting
题解摘自做题记录。分析数据范围明显得要让我们分开搞。【Sub2】应该是暴力。这里有个主体思路,我们完全可以贪心地将当前背包里的食材删掉,直到每种出现过的食材数量刚好为\(1\)。因为我们保留更多的是没有用的。那么我们就可以用二进制数表示\(x\)种食材的出现状态了。同
- 2024-11-13代码随想录算法训练营第二十四天| leetcode93.复原IP地址、 leetcode78.子集、leetcode90.子集II
1leetcode93.复原IP地址题目链接:93.复原IP地址-力扣(LeetCode)文章链接:代码随想录视频链接:回溯算法如何分割字符串并判断是合法IP?|LeetCode:93.复原IP地址_哔哩哔哩_bilibili思路:就是将这个字符串符合要求的进行一个收集,然后使用列表存储,最后使用join函数将这个列表进行连
- 2024-11-11动态规划-背包问题——416.分割等和子集
1.题目解析题目来源416.分割等和子集——力扣测试用例 2.算法原理1.状态表示这里背包问题基本上和母题的思路大相径庭,母题请见[模板]01.背包 ,这里的状态表示与装满背包的情况类似,第二个下标就是当选择的物品体积直接等于j时是否可以装入"背包",本题是求是否
- 2024-11-1178. 子集
题目链接解题思路从左往右的尝试,暴力递归(回溯),process(index,path),来到index,两种情况,要index的数,或者不要index的数代码classSolution{public:voidprocess(vector<vector<int>>&ans,constvector<int>&nums,intindex,vector<int>&path){
- 2024-11-08代码随想录 -- 动态规划 -- 分割等和子集
416.分割等和子集-力扣(LeetCode)思路:题目中表述:将数组nums分割成两个子集,使得两个子集的元素和相等。可以转化为:有一个背包,如果存在部分元素组合可以令容量为nums的和的一半的背包容纳的最大价值也为nums的和的一半,那么剩下的元素和也是nums的一半,则符合题意。dp[j]含义:
- 2024-11-06高维前缀和
高维前缀和二维前缀和一般的做法是容斥:for(inti=1;i<=n;++i)for(intj=1;j<=n;++j)sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];实际上也可以固定其他维度,依次在每一维上求前缀和,即:for(inti=1;i<=n;+
- 2024-11-062024.11.6 鲜花
アイデン貞貞メルトダウンアリ!?ナシ!?ナシ!?アリ!?ついてるついてないあれどっち?どっち?Trance,trance,trance蟻!?梨!?nAシ!?ァ理!?自我字が崩壊!インドア警備隊紫外線さよなら(バイバイalright!一級在宅allday!)やる気の“や”の字どっかにいっちゃったんだナイナイ心技体
- 2024-11-052024.11.5 闲话
别人的闲话都推图or歌,我的鲜花啥也没有。我也没啥可推的啊,求图or歌高维前缀和常见的柿子是\(s_{i,j}=s_{i-1,j}+s_{i,j-1}-s_{i-1,j-1}+a_{i,j}\)。但是还可以一维一维求。点此查看代码rep(i,1,n,1)rep(j,1,m,1)a[i][j]+=a[i-1][j];rep(i,1,n,1)rep(j,1,m,1)a[i]
- 2024-10-31二进制相关
状态压缩状态枚举利用lowbit可以快速获取所有前继的状态(100110->100100)利用for(inti=x;i;i=(i-1)&x)可以做到\(3^n\)枚举子集位运算\(\textcolor{red}{*}\)位运算优先级注意:1、加减号优先级高于一切位运算符(mid=l+r>>1);2、按位运算符(&、|、^)优先级低于数值判断号((x&1)=
- 2024-10-26刷题总结——回溯算法
总论增量构造答案关注边界条件的逻辑当前操作?(选/不选,枚举选哪一个)子问题?下一个子问题?用什么数据结构保存搜索路径?时间复杂度计算:搜索树节点数*生成答案需要的时间题目分类可以分成子集型、排列型和组合型三种:回溯问题时间复杂度O()解法子集LC78nx2^n
- 2024-10-23二分图
二分图概念假设\(G=(V,E)\)是一个无向图,若点集\(V\)可以分解成互不相交的子集\((A,B)\),并且图中所有边\((i,j)\)的端点\(i\)、\(j\)分别属于子集\(A\)、\(B\),则称\(G\)是一个二分图定理:一张无向图时二分图,当且仅当图中不存在奇环。染色法判定一个图是否是二分图
- 2024-10-23二分图学习笔记
1.概念假设图\(G=(V,E)\)是无向图,若顶点集\(V\)可以分成两个互不相交的子集\((A,B)\),且任意边\((i,j)\)两端点分别属于两子集,则图\(G\)是二分图判断方法:染色法匹配:无公共点的边集匹配数:边集中边的个数最大匹配:匹配数最大的匹配增广路:设M是一个匹配,如果存在一条连接两个未匹
- 2024-10-21集合基本概念
集合1、集合与元素集合:由一个或多个确定的元素所构成的整体,是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。元素:构成集合的这些对象则称为该集合的元素。例如,全中国人的集合,它的元素就是每一个中国人。例如,{1,3,5}是一个集合,3是该集合的元素。2、空集有一类
- 2024-10-20CSP 模拟 51
A排列最小生成树(pmst)首先想到\(n^2\)建边的做法,然后最小生成树的所有边权都小于\(n\),直接从头到尾连都能轻松满足这个。所以很多边是无用的,只要找边权小于\(n\)的边即可。所以对于位置差和权值差在\(\sqrtn\)以下的都找一遍即可,然后桶排跑MST即可。赛时根号都写脸
- 2024-10-20[ABC376E] Max × Sum 题解
[ABC376E]Max×Sum题解原题链接洛谷链接一道简单的推性质题,首先明确一个性质,子集是非连续的,所以在计算时并不用连续区间求。拿过题来,首先想的是枚举\(B\)的最小子集,但其复杂度为\(O(C_N^K)\)复杂度过高,不足以通过本题。于是转变思路,枚举\(A\)之中的最大值。若\(a_i
- 2024-10-17高维前缀和
1原来我不会。子集枚举枚举一个集合的每个子集的所有子集。for(ints=0;s<(1<<n);s++){for(ints0=s;;s0=s0&(s0-1)){cout<<s0<<'';}}其中\(s0\)即为枚举的每个子集的所有子集。这是为什么?第一层循环中,我们枚举了一个子集。那么第二层循环中,我们就
- 2024-10-04LeetCode78 子集
题目:给你一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。示例1:输入:nums=[1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例2:输入:nums=[0]输出:[[],[0]]思路:回溯法
- 2024-09-29足球分析:AI数据分析预测足球联赛解读
一、前言在当今数字化时代,人工智能(AI)正逐渐在各个领域展现出强大的实力,足球领域也不例外。在你还在苦于该如何分析各类足球联赛的情况时,AI或许便已经给出了解读答案,AI优异的数据分析能力使得它能够胜任预测足球各大联赛的任务,本文将介绍该如何利用AI来预测足球比赛结果。二
- 2024-09-25子集反演 & sos dp 学习笔记
子集反演&sosdp学习笔记子集反演设\(g(S)\)表示集合\(S\)的答案,\(f(S)\)为\(S\)的子集的答案和。根据定义:\[f(S)=\sum_{T\inS}g(T)\]子集反演就是:\[g(S)=\sum_{T\inS}(-1)^{|S|-|T|}f(T)\]本质上就是容斥原理,可感性理解,证明略(给你你也记不住)。于是便可以通
- 2024-09-24总结
集合考虑枚举子集和,统计有多少个子集的和为当前枚举的子集和,然后我们记个结论:\(x^y=x^{y\mod(p-1)}\),然后就过了P3488一眼二分图(网络流启动),但是考虑到图很大,所以我们考虑直接判断是否是二分图,考虑一个区间,如果总数比这个区间所能承载的人都要大,那么肯定会寄,所以用线段树维
- 2024-09-22Day 21 回溯法part03| LeetCode 93. 复原 IP 地址,78.子集,90.子集II
93.复原IP地址93.复原IP地址classSolution{List<String>res=newArrayList<>();publicList<String>restoreIpAddresses(Strings){backtracking(s,0,0);returnres;}voidbacktrack
- 2024-09-21JAVA学习-练习试用Java实现“子集”
问题:给定一个整数数组nums,数组中的元素互不相同。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。示例1:输入:nums=[1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例2:输入:nums=[0]输出:[[],[0]]提示:1<=num