
算法
辽宇
强者明理自理,弱者优柔寡断.
展开
-
力扣-第 319 场周赛
力扣周赛原创 2022-11-17 11:26:43 · 241 阅读 · 0 评论 -
力扣第317场周赛最后一题——移除子树后的二叉树高度(贪心)
无原创 2022-11-02 21:42:23 · 234 阅读 · 0 评论 -
【力扣周赛】第 315 场周赛
无原创 2022-10-16 12:37:40 · 270 阅读 · 0 评论 -
CSP-DHCP服务器
CSP第三题原创 2022-10-04 17:47:40 · 346 阅读 · 0 评论 -
CSP-脉冲神经网络
CSP原创 2022-10-03 18:29:47 · 299 阅读 · 0 评论 -
矩阵快速幂模板+fab矩阵加速递推
线性代数原创 2022-10-02 17:14:00 · 149 阅读 · 0 评论 -
CSP-防疫大数据202209-3
CSP原创 2022-10-01 14:36:17 · 1680 阅读 · 0 评论 -
CSP-序列查询新解
CSP第二题原创 2022-09-28 14:17:18 · 433 阅读 · 0 评论 -
CSP-计算资源调度器
CSP第三题模拟原创 2022-09-22 14:26:55 · 583 阅读 · 0 评论 -
CSP 2021-6 角色授权
算法模拟题原创 2022-09-12 16:29:06 · 509 阅读 · 0 评论 -
飞行员兄弟(暴力)
题目链接AcWing 116.#include <bits/stdc++.h>using namespace std;char s[5][5];char b[5][5];bool check(){ for(int i=0;i<4;i++) for(int j=0;j<4;j++) if(b[i][j]=='+') return false; return true;原创 2022-04-12 12:26:17 · 252 阅读 · 0 评论 -
最高的牛(差分)
题目链接AcWing 101.思路:记每头牛的初始身高为H,若a,b两头牛能看见,则他们之间的牛身高减一即可。利用差分数组记录区间修改即可。注意重复关系不要重复处理。/* 思路:记每头牛的初始身高为H,若a,b两头牛能看见,则他们之间的牛身高减一即可。 利用差分数组记录区间修改即可。注意重复关系不要重复处理。*/#include <bits/stdc++.h>using namespace std;int a[5050];int main(){原创 2022-04-12 12:26:00 · 198 阅读 · 0 评论 -
最佳牛围栏(二分、难点)
题目链接AcWing 102.思路易错点在代码上部。/* 二分平均值. 题目中有长度不小于L的限制(len>=L) check时判断是否存在sum - len * avg >= 0 可以转化为是否存在子段和sum(a[i]-avg)非负,且子段长度不小于L 子段和sum用前缀和维护. for(int i=1;i<=n;i++) b[i] = a[i] - avg; int minn = 1e9; int原创 2022-04-12 12:25:24 · 281 阅读 · 0 评论 -
七夕祭(贪心、难点)
题目链接AcWing 105.思路分析易错点均在代码中。/* 1.思考什么时候输出impossible 2.思考横向交换是否影响竖向交换? 不影响。 3.单独考虑一维的最少交换情况(这里讨论行,使得每一列数量均相等) 考虑均分纸牌问题,这里是环形均分纸牌问题. 分析: 均分纸牌: 记S[i]为第i个人获得了S[i]张牌(为正则为获得牌;为负则为给出牌)原创 2022-04-12 12:24:41 · 205 阅读 · 0 评论 -
增减序列(思维、难点)
题目链接AcWing 100.分析:区间操作,先转化为差分数组形式,那么最终答案的差分数组应该是 x 0 0 0 0 0 0 … 的形式。题目转化为:每次让差分数组的一个位置+1(或-1),另一个位置-1(或+1),位置的范围可以选择[1,n+1](1)使数组达到目标形式的次数最少容易想到一种贪心的策略:当数组中不存在负数时:一个位置选择非0的[2,n]的位置,另一个位置选择1或n+1即可。当数组中不存在正数时:同理。当数组中正负数都存在时:先每次选择一正一负,直到正数选完或者负数选完原创 2022-04-12 12:23:40 · 465 阅读 · 0 评论 -
激光炸弹(前缀和)
题目链接AcWing 99.思路在代码中。/* 目标数量10000,枚举每个目标作为矩形左上角,计算二维前缀和.*/#include <bits/stdc++.h>using namespace std;int n,r;int a[5050][5050];int main(){ std::ios::sync_with_stdio(false);std::cin.tie(nullptr); cin >> n >> r;原创 2022-04-11 21:38:18 · 144 阅读 · 0 评论 -
约数之和(分治,公式变形)
题目链接AcWing 97.本题有两种方法,公式法与求逆元,这里使用逆元求等比数列的和注意逆元不存在的情况(代码中有标注)/* 1.分治法 2.同余逆元 对于(a/b)%MOD 逆元不存在:等价于b % MOD = 0*/#include <bits/stdc++.h>using namespace std;typedef long long ll;const int MOD = 9901;int p[50000010],原创 2022-04-11 21:36:50 · 174 阅读 · 0 评论 -
费解的开关(状态压缩)
题目链接AcWing 95.思路:先枚举第一行的状态,再依次判断其他每个位置是否需要操作。代码:#include <bits/stdc++.h>using namespace std;char s[7][7];char b[7][7];int dx[4] = {0,0,1,-1};int dy[4] = {1,-1,0,0};void calc(char &c){ c = (char)(((c - '0') ^ 1) + '0');}void tr原创 2022-04-11 21:34:36 · 170 阅读 · 0 评论 -
递归实现排列型枚举(搜索)
题目链接AcWing 94.代码:#include <bits/stdc++.h>using namespace std;int a[11];int main(){ int n; cin >> n; for(int i=1;i<=n;i++) a[i] = i; do{ for(int i=1;i<=n;i++) cout << a[i] <<原创 2022-04-11 21:32:44 · 148 阅读 · 0 评论 -
递归实现组合型枚举(搜索)
题目链接AcWing 93.代码:#include <bits/stdc++.h>using namespace std;int book[30];int n,m;void dfs(int sz,int maxn){ //maxn记录当前最大值. if(n-maxn+sz<m){ //剪枝. return; } if(sz==m){ for(int i=1;i<=n;i++)原创 2022-04-11 21:31:41 · 162 阅读 · 0 评论 -
递归实现指数型枚举(搜索)
题目链接AcWing 92.代码:#include <bits/stdc++.h>using namespace std;int main(){ std::ios::sync_with_stdio(false);std::cin.tie(nullptr); int n; cin >> n; cout << "\n"; for(int i=1;i<1<<n;i++){ for(int原创 2022-04-11 21:30:26 · 129 阅读 · 0 评论 -
起床困难综合症(位运算)
题目链接AcWing 998.题意:最初攻击力不知道,给定m次位运算操作,计算经过m次位运算操作后的最大值。思路:在代码顶部混合位运算不具有分配律,交换律,结合律// 存在多个不同的位运算符号时,不具有结合律,因此不能先算后面/* x & 5 | 6 ^ 7 != x & (5 | 6 ^ 7) x = 2时,左边为1,右边为0*/// 思路:按位去判断,从高到低枚举每一位的两种情况.// 2^30 > 1e9#include <原创 2022-04-11 21:28:55 · 166 阅读 · 0 评论 -
最短Hamilton路径(状压DP)
题目链接AcWing 91.代码:(思路在注释)#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 21,M = 1 << N;int w[N][N];int f[M][N]; // 经过点的状态 ----- 当前所在的点.int main(){ int n; cin >>原创 2022-04-11 21:25:59 · 168 阅读 · 0 评论 -
64位整数乘法(类快速幂)
题目链接AcWing 90.代码#include <bits/stdc++.h>using namespace std;typedef long long ll;ll quick_mod(ll a,ll b,ll p){ ll res = 0; while(b){ if(b&1) res = (res + a) % p; b >>= 1; a = a * 2 % p; } re原创 2022-04-11 21:24:38 · 145 阅读 · 0 评论 -
a^b(快速幂)
题目链接AcWing89.代码#include <iostream>using namespace std;typedef long long ll;ll quick_mod(ll a,ll b,ll MOD){ ll res = 1; while(b){ if(b&1) res = res * a % MOD; b >>= 1; a = a * a % MOD; } retu原创 2022-04-11 21:23:20 · 189 阅读 · 0 评论 -
容斥原理babiQ
容斥原理:选择了奇数个集合则加、偶数个则减,利用二进制状态压缩枚举所有情况。ABC_246_F:题目链接题意:给定N个字符串,从中间选择一个字符串中的字符可以任意重复使用,组成长度为L的字符串有多少种方案。1≤N≤18.tips:看题目范围,枚举每一种情况,复杂度在2^n级别tips:结合上面提到的容斥原理,利用bitset内置函数set()统计1的个数.bitset<26> b[20];void solveF(){ ll n,l; cin >>.原创 2022-04-05 15:19:48 · 470 阅读 · 0 评论 -
树状数组babiQ
树状数组,这工具人真好用,补下模板题,一家人就要整整齐齐。AcWing 241. 楼兰图腾题目链接四个月前写了一次,现在又写了一次,两次虽处理方式不同,异曲同工.#include <bits/stdc++.h>using namespace std;#define int long longtypedef long long ll;const int N = 200010;int tr[N];int a[N],rt[N],lf[N];int n;int lowb原创 2022-04-05 14:59:07 · 482 阅读 · 0 评论 -
并查集babiQ
AcWing 237. 程序自动分析题目链接典型的并查集题目,利用题目约束的传递性做题。此题既不需要带权,也不需要拓展域。注意题目范围,需要先进行离散化处理(并查集的题目一般都需要进行离散化处理)离散化void my_read(int n){ int i,j,e; total = 0; for(int k=1;k<=n;k++){ scanf("%d%d%d",&i,&j,&e); query[k] = (Q原创 2022-04-05 14:50:19 · 912 阅读 · 0 评论 -
AcWing 145.超市(二叉堆)
题目链接这道题在李煜东进阶指南里讨论了两种解法,都是基于贪心的思路,借助不同的数据结构,从而很好的达到目的。这里讨论二叉堆的解法。看到这道题,想到了白书汽车加油问题,在某个站点加不加油取决于在后面行驶过程中油是否用完,如果油用完了,就选择所经过加油最多的站点加油。油用完了再进行加油,相当于在之前就选择了加油。此题也是一样,基于一种贪心的策略,先按照过期时间从小到大排序,创建小根堆,堆中维护的是暂时选择的商品的利润。遍历每一个商品,如果当前商品没有过期,则直接把这件商品扔进堆中;否则与堆顶元素比较,原创 2022-04-05 14:20:11 · 921 阅读 · 0 评论 -
离散化深入总结之三种离散化的方式——保序与不保序
文章目录前言一. 保序且保留绝对关系1. unique2. erase3. 注意lower_bound的使用,下标要+1(大多数情况)4. 离散化模板5. 练习二.保序且保留相对关系三.不保序只保存元素前言离散化用途广泛,很多时候数的区间很大,而数据量却很少,这时可以使用离散化的操作。离散化是一种类似哈希的思想,这里总结三种离散化方式(C++语言),包括保序和非保序离散化,保留绝对关系和保留相对关系的离散化。一. 保序且保留绝对关系这种离散化的方式实质是:压缩空间。这种离散化方式借助C++ .原创 2021-12-02 11:41:34 · 2159 阅读 · 0 评论 -
图论最短路:Bellman-Ford与其优化SPFA算法的一点理解
文章目录前言一、对Bellman-Ford的深入理解1. Bellman-Ford有什么用?2. 什么是松弛操作?3. Bellman-Ford的k次迭代意义?4. 一个重要定理5. 对于模板的深入理解二、Bellman-Ford到SPFA解决:1. 最短路。 2. 判断负环。比较:SPFA与Dijkstra三、 一点问题前言随着对图论的深入,内心产生了很多问题。之前的文章:图论最短路及生成树(Prim,Djikstra,Spfa,Bellan-ford,kruskal,t.原创 2021-12-01 22:38:45 · 293 阅读 · 0 评论 -
牛客练习-哈尔滨理工大学21级新生程序设计竞赛(同步赛)
比赛链接:哈尔滨理工大学21级新生程序设计竞赛(同步赛)文章目录前言正文A.考试周破防B.咖啡店C.kiki和bob玩取石子D.猴王kiki分桃E.很二的拆分F.构造字符串G.信号之旅H.小球滚动I.kiki看球赛J.跳一跳K.Jay的小弟总结前言昨天python考试没参加,于是乎今天做一做。虽说简单,但真正做起来花了我三个小时,没借助任何外力,包括自己debug,只想说单凭自己做真的不容易即使很简单,自己的问题会被无限放大。一共做了十一个,前十一个。有两道题目意思理解错了(D、K),有点影响心态原创 2021-11-27 21:15:53 · 612 阅读 · 2 评论 -
CCPC-EDG专场——E.Buy and Delete
acyclic:无环的题目链接dijistra判最小环。#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#include <vector>#include <queue>#define INF 0x3f3f3f3fusing namespace std;typede原创 2021-11-19 12:11:46 · 283 阅读 · 0 评论 -
牛客练习11月上
文章目录一、 牛客练习赛84二、 牛客练习赛85三、 牛客练习赛88四、 牛客练习赛90五、 牛客练习赛91一、 牛客练习赛84牛客推荐系统开发之选飞行棋子#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;typedef long long ll;char s[5][5050];ll sum原创 2021-11-19 12:06:57 · 423 阅读 · 0 评论 -
凸包板子试炼(玄学过题)
歪日,用了两个凸包板子,就是正确不了,自己思路也没啥问题啊。落泪了,以为是板子的问题,可能是我的问题.我靠,就在我写一篇“没做出题的失败的博客的时候”,抱着试一试的心态,歪日,AC了。什么玄学过题.在做这题的时候,一个小技巧:在判断三点共线时,可以用利用叉积为0来判断三点共线。/* B Convex Polygon 二维几何:判断所给的点是否为凸多边形.并按顺时针顺序输出点(从最接近(0,0)的点开始输出) 若为否(三点共线或不为凸多边形)输出"ERROR". *//*题目实际上没有所原创 2021-11-11 22:14:07 · 321 阅读 · 0 评论 -
高斯消元求解四种方程组
高斯消元文章目录一、线性方程组的求解二、线性方程组整数类型三、线性方程组浮点数类型四、求解模线性方程组五、求解异或线性方程组六、Matrix Equation注:文章内容摘选自其他博客模板代码来自: 作者:Alex_McAvoy 文章链接:线性代数——高斯消元法一、线性方程组的求解在求解线性方程组往往将其系数矩阵(或增广矩阵)化为上三角矩阵。在化为上三角矩阵后,若增广矩阵中出现形如 0 0 0 0 a 的行,则该线性方程组无解;若增广矩阵中每一行均有非0元素(即上三角矩阵完整)则有原创 2021-11-11 12:39:07 · 1399 阅读 · 0 评论 -
计算几何~
https://blog.youkuaiyun.com/clover_hxy/article/details/53966405https://fanfansann.blog.youkuaiyun.com/article/details/108834399https://fanfansann.blog.youkuaiyun.com/article/details/108913764原创 2021-11-10 16:23:38 · 238 阅读 · 0 评论 -
The 2021 ICPC Asia Regionals Online Contest (I)
The 2021 ICPC Asia Regionals Online Contest (I)写了一晚上,日…文章目录一、 A Busiest Computing Nodes二、D Edge of Taixuan三、F Land Overseer四、I Neiborhood Search五、K Segment Routing一、 A Busiest Computing Nodes#include <iostream>#include <cstdio>#include原创 2021-11-09 22:36:42 · 404 阅读 · 0 评论 -
线段树大合集
1.最大数#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int N = 200005;int m,p;struct Tree{ int l,r; int v; //最大值属性.}tr[N * 4];void push.原创 2021-11-06 17:47:17 · 144 阅读 · 1 评论 -
codeforces round #752
题目链接A. Eratypedef long long ll;void solve(){ ll n; scanf("%lld",&n); ll ans = 0; ll x,y; scanf("%lld",&x); y = x; ans += (x-1); ll cnt = 0; for(int i=2;i<=n;i++){ scanf("%lld",&x); ll m = i-1+cnt; if(y-i-m){ cnt +原创 2021-11-01 18:09:26 · 113 阅读 · 0 评论