![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法竞赛
文章平均质量分 71
以算法竞赛获奖为目标,不断刷题提升自己算法能力。
朴素先生在进步
在读研究生,欢迎一起交流技术。
展开
-
kuangbin带你飞专题十匹配问题
HDU1045 Fire Net思路二分图最大匹配匈牙利算法如何建立模型转自:xuyaun160322图片转自:lllllan.对图进行建模,对同一行缩点构成X图,对同一列缩点构成Y图,这里构成的边即缩点区域相交的位置, 映射成图的某个坐标位置。"1"要素:从左边图选x,右边图选y, 即是图的某个具体位置,选定的(x, y)这条边只能唯一,(唯一边占用两类资源), 即x不能被选两次或y不能被选两次,否则那样就会互相攻击。"0"要素某个集合内部没有交集,即没有边。代码#includ原创 2021-09-25 15:42:02 · 177 阅读 · 0 评论 -
kuangbin 二分
POJ 3104 Drying思路非常标准的二分枚举答案的题目设t为用器电的次数, mid为天数a[i] = k * t + mid - tt = (a[i] - mid) / (k-1)向上取整我忘记减去t了,因为你那天用了器电,就不能加上原来 加1的情况还要别忘了开longlong!!真见祖宗了代码#include<iostream>#include<cstring>#include<algorithm>#include<cstdio&g原创 2021-10-11 11:04:36 · 78 阅读 · 0 评论 -
kuangbin专题线段树
HDU 1166 敌兵布阵思路线段树单点修改模板代码#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>using namespace std;const int N = 50010;struct Node { int l, r; int sum;} tr[N * 4];int w[N];void pushup(int u原创 2021-10-04 21:19:05 · 200 阅读 · 0 评论 -
kuangbin背包九讲
HDU - 2602 Bone Collector思路01背包板子题代码// 二维数组#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N = 1010;int f[N][N];int w[N], v[N];int main() { int T; scanf("%d", &T); while(.原创 2021-10-12 19:30:40 · 71 阅读 · 0 评论 -
kuangbin带你飞专题十四数论基础
kuangbin带你飞专题十四数论基础LightOJ 1370 Bi-shoe and Phi-shoe题意找出比自己大且欧拉函数也比自己大的第一个数思路很巧妙, 找比自己大的第一个质数就可以, 因为质数x, ϕ(x)=x−1\phi(x) = x-1ϕ(x)=x−1代码#include<iostream>#include<cstring>using namespace std;const int maxn = 1e6 + 5;int prime[maxn];原创 2021-09-20 10:03:31 · 189 阅读 · 0 评论 -
kuangbin带你飞专题十四基础DP
HDU1024 Max Sum Plus Plus题意你有n个数s1, s2…sn,给你一个整数m,求m个子段和的最大值思路代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn = 1e6 + 10;const int inf = 0x7ffffff;int a[maxn]原创 2021-09-18 09:23:24 · 339 阅读 · 0 评论 -
kuangbin带你飞数论
LightOj 1045 Digits of Factorial题意(好题)给定一个数N,和进制k, 求N!在k进制下 位数的个数思路设进制为base,m为个数N!=basemN! = base^mN!=basem, mmm即 位数的个数则basem=N!=1∗2∗3∗4∗...∗(n−1)∗nbase^m = N! = 1 * 2 * 3 * 4 * ...* (n - 1) * nbasem=N!=1∗2∗3∗4∗...∗(n−1)∗n两边同时取对数logmlogbase=log1+1原创 2021-09-28 20:54:59 · 120 阅读 · 0 评论 -
kuangbin专题欧拉回路
HDU - 1878 欧拉回路 题意判断是否存在欧拉回路思路判断连通性并且判断所有度数均为偶数代码#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int N = 1010;int d[N];int g[N][N];int vis[N];int n, m;void dfs(int u) { vis[u] = true;原创 2021-10-14 09:02:54 · 89 阅读 · 0 评论 -
kuangbin带你飞专题34RMQ
POJ 3368 Frequent values思路因为序列是非递减的我们可以新开一个数组num用于记录目前到达的相同数量最多的个数if(num[i] == num[i - 1]) num[i] = num[i - 1]else num[i] = 1比如: -1 -1 1 1 1 1 3 10 10 10num[] : 1 2 1 2 3 4 1 1 2 3这样我们就可以用RMQ了但是前段部分是被截断了的,所以先暴力求第一个相同的数的个数然后后半部分 RMQ求最大值即可然后两部分取M原创 2021-09-28 07:52:18 · 82 阅读 · 0 评论 -
kuangbin带你飞专题五并查集
POJ - 2236 Wireless Network 题意两个操作:维护电脑查询 两台电脑是否能通信思路并查集注意:是否能通信条件 get_dist(Point a Point b) <=d && 都已维护sqrt 丢失精度问题,用 距离平方与d的平方作比较代码#include<iostream>#include<cstring>#include<algorithm>#include<cmath>原创 2021-09-23 22:32:37 · 154 阅读 · 0 评论 -
kuangbin数学训练1
LightOJ - 1078 Integer Divisibility 思路博弈先手必胜: 可以走到必败状态先手必败: 无论如何也走不到必败状态该题,模拟一下就知道若Alice先手的情况,则n%3 == 1 是先手必败状态若Bob先手的情况,则n%3 == 0 是先手必败状态代码#include<iostream>#include<cstring>#include<algorithm>using namespace std;int ma原创 2021-10-03 11:05:04 · 130 阅读 · 0 评论 -
kuangbin专题拓扑排序
HDU1285 确定比赛名次思路简单拓扑排序模板注意:答案不唯一,输出字典序小的我这里用的是小根堆维护代码#include<iostream>#include<cstring>#include<algorithm>#include<queue>using namespace std;priority_queue<int, vector<int>, greater<int> > heap;cons原创 2021-10-06 11:33:55 · 128 阅读 · 0 评论 -
kuangbin数学训练2
LightOJ - 1058 Parallelogram Counting题意给出若干个点坐标,问最多能构成多少个不同的平行四边形思路找每条线段的中点重合即可假如 m条线段的中点重合,则可构成Cm2C_m^2Cm2个平行四边形代码(转)#include <cstdio>#include <stack>#include <algorithm>#include <cstring>#include <cmath>#includ.原创 2021-10-04 16:47:17 · 88 阅读 · 0 评论 -
kuangbin字典树
POJ - 2001 Shortest Prefixes思路在字典树标记字母出现的次数即可当发现cnt[p] == 1时,说明这个字母前缀只出现过一次,直接返回即可代码#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N = 1010 * 26;int son[N][26];int idx;char str[N][26];i.原创 2021-10-10 21:49:54 · 79 阅读 · 0 评论 -
kuangbin最小生成树
POJ - 1251 Jungle Roads思路Prim最小生成树模板题代码#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;typedef long long LL;const int N = 200, M = N * N;int g[N][N];int dist[N];int n;bool st.原创 2021-10-07 22:22:43 · 92 阅读 · 0 评论 -
kuangbin带你飞专题四最短路
kuangbin带你飞专题四[POJ3268 Silver Cow Party](Silver Cow Party - POJ 3268 - Virtual Judge (vjudge.net))德平在他的农场里养了n头牛,每头牛都有一个固定的位置,每天这些牛都要到德平家里参加聚会然后回去,给出n,m,代表牛数+1和有向边数,接着是m条有向边(a,b,c),代表从牛a到牛b需要花费c秒,给你德平家的位置X(1~n的除x外的编号为牛的位置),每头牛都有一个参加聚会并且回到原来位置的最短时间,从这些最短时间原创 2021-09-16 22:32:05 · 117 阅读 · 0 评论 -
kuangbin专题KMP & 扩展KMP & Manacher
HDU - 1711 Number Sequence思路KMP模板代码#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N = 1000010;int s[N], p[N];int ne[N];int main() { int n, m; int T; scanf("%d", &T); .原创 2021-10-07 14:49:47 · 137 阅读 · 0 评论 -
牛客小白16H小阳的贝壳 (线段树+差分)
牛客小白16H小阳的贝壳 (线段树+差分)代码#include <iostream>#include <cstdio>#include<cstring>#include<algorithm>#define dbg(a) cout<<#a<<" : "<<a<<endl;#define IOS std::ios::sync_with_stdio(false);cin.tie(0),cout.tie原创 2021-10-19 14:49:34 · 104 阅读 · 0 评论 -
牛客小白37
B擅长解密的小红同学思路因为每次输入会重置,求期望也就是求尝试多少次能成功,等价于求这些数字有多少种排列组合。也就是多重排列数的问题。多重排列数设S={n1a1,n2a2,…,nkak}S= \{n_1a_1,n_2a_2,…,n_ka_k\}S={n1a1,n2a2,…,nkak}是由n1n_1n1个a1a_1a1,n2n_2n2个a2a_2a2,nkn_knk个aka_kak组成的多重集。多重集排列数多重集SSS的全排列,不考虑相同的元素,其全排列个数为(∑i=1原创 2021-09-03 21:12:57 · 113 阅读 · 0 评论 -
牛客小白17
题目链接小sun的假期思路区间合并代码#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <cstring>#include <queue>#include &原创 2021-10-17 18:36:25 · 110 阅读 · 0 评论