zbyQIN

 

2024年12月5日

如何快速枚举出一个二进制数的所有子集

摘要: 先说什么是子集 假如一个二进制数是01000101 子集就是01000101,01000100,01000000,00000100,00000001,00000101,01000001 #include<bits/stdc++.h>using namespace std; int main(){ f 阅读全文

posted @ 2024-12-05 23:02 秦風 阅读(1) 评论(0) 推荐(0) 编辑

异或运算的本质

摘要: 算法讲解030【必备】异或运算的骚操作_哔哩哔哩_bilibili 阅读全文

posted @ 2024-12-05 21:50 秦風 阅读(3) 评论(0) 推荐(0) 编辑

2024年11月25日

多重背包通过二进制分组转化为01背包

摘要: 算法讲解075【必备】背包dp-多重背包、混合背包_哔哩哔哩_bilibili 对于每个物品的数量可以用二进制的方式进行拆分: 比如说一个物品有13个 可以被拿走的范围是0-13 我们可以将13分为1+2+4+7 可以发现3可以被1+2 5可以被1+4 依次进行可以发现这样分组后0-13都可以被表示 阅读全文

posted @ 2024-11-25 21:51 秦風 阅读(1) 评论(0) 推荐(0) 编辑

2024年11月21日

LIS问题

摘要: 下面介绍nlogn做法 : 需要一个end数组 end[i]代表长度为i+1的递增序列的最小结尾是谁 每次进来一个新数 在end里寻找大于等于该数的位置,如果找的到说明可以将该数换为更优,直接替换 如果找不到说明end数组可以更新,将新数加入end数组中 最后end数组的大小即为答案 该过程可以用s 阅读全文

posted @ 2024-11-21 22:16 秦風 阅读(3) 评论(0) 推荐(0) 编辑

2024年11月10日

单调栈基础模板与分析

摘要: #include<bits/stdc++.h> using namespace std; const int N=1000005; int n,ansl[N],ansr[N],a[N]; int f[N],r,x; int main() { cin>>n; for(int i=0;i<n;i++)c 阅读全文

posted @ 2024-11-10 20:20 秦風 阅读(1) 评论(0) 推荐(0) 编辑

2024年10月29日

差分(一维与二维)与等差数列问题

摘要: 利用差分的思想解决 多次对数组区间加相同数,或者加一个等差数列 最好思路:从目标数列往前推两次前缀和,反推差分数组应该怎么加 #include<bits/stdc++.h> #define int long long using namespace std; int n,m,l,r,s,e,d,ma 阅读全文

posted @ 2024-10-29 21:45 秦風 阅读(8) 评论(0) 推荐(0) 编辑

2024年10月21日

快速幂

摘要: 算法讲解090【必备】贪心经典题目专题2_哔哩哔哩_bilibili 第一部分讲解快速幂 #include<bits/stdc++.h> #define int long long using namespace std; int a,b,mod; int qpow(int x,int n) { i 阅读全文

posted @ 2024-10-21 22:40 秦風 阅读(2) 评论(0) 推荐(0) 编辑

2024年10月20日

dij算法与小根堆

摘要: dij即利用一个小根堆 每次取出队头元素,利用队头元素对其他点进行松弛 每当一个点出队,说明他已经是被最小元素松弛过,那么不可能有更优解,那么便打上标记 松弛时注意目标点是否已经出队,如果出队说明不能再被松弛 注意:dij只能用于没有负边的图内 复杂度为O(mlogm) struct node { 阅读全文

posted @ 2024-10-20 22:36 秦風 阅读(6) 评论(0) 推荐(0) 编辑

A*,spfa,和如何利用spfa判断负环

摘要: A*即是在dij的思路上加上预估函数 注意:此处的欧式距离即为max(|x1-x2|,|y1-y2|); spfa算法 每个点至多被松弛n-1次; 我们利用队列来记录哪些点被松弛过(因为被松弛过说明距离变的更小,就有机会更新别人),一个点一旦出队,即取消标记 那么我们又该如何判断负环呢? 我们有一种 阅读全文

posted @ 2024-10-20 22:27 秦風 阅读(2) 评论(0) 推荐(0) 编辑

2022年11月19日

洛谷P3917 异或序列

摘要: 题意: 给出一个大小为n的序列a[n],求∑1≤i≤j≤n Ai​⨁Ai+1​⨁⋯⨁Aj的值​分析: 根据异或的性质我们很容易想到一个O(n*n)的做法,即进行一个异或前缀和。 for (int i = 1;i=< n;i ++) for (int j = 1;j <= i;j ++) ans += 阅读全文

posted @ 2022-11-19 20:27 秦風 阅读(63) 评论(0) 推荐(0) 编辑

导航