![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM_干货
文章平均质量分 66
Ch_zaqdt
这个作者很懒,什么都没留下…
展开
-
BST的INSERT、FIND、DELETE、遍历
嗯...就是贴个板子#include <bits/stdc++.h>using namespace std;struct node{ int num; node *p, *l, *r;};node *root, *null;int n, xx;string str;void p_inorder(node *x){ // 中序...原创 2019-05-04 02:07:09 · 658 阅读 · 0 评论 -
牛客练习赛36 A. Rabbit的字符串(字符串最小表示法+模拟)
题目链接:https://ac.nowcoder.com/acm/contest/328/A 一种方法是字符串最小表示法,直接求出ans是否等于0就好了,还有就是用string去模拟这个过程,过题姿势很多,string还是最简单方便的,其他的思路就是去一个一个枚举判断分情况讨论。AC代码(字符串最小表示法):#include <bits/stdc++.h&g...原创 2019-01-05 11:43:59 · 257 阅读 · 0 评论 -
二分图详解
本篇博客主要讲解什么是二分图,怎样判断二分图,匈牙利算法和HK(Hopcroft-Karp)算法,以及二分图多重匹配。二分图定义: 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B)...原创 2018-11-30 16:02:25 · 1526 阅读 · 0 评论 -
POJ 2449 Remmarguts' Date(k短路模板)
题目链接:http://poj.org/problem?id=2449 题意是n个点,m条边,然后输入m条边,最后输入起始点和终止点和第k短路。 是一个k短路的模板题(赤裸裸的),呆码也可以存下来当模板用,主要是spfa+A*实现的。AC代码:#include <iostream>#include <cstdio>#inc...原创 2018-11-02 00:32:15 · 181 阅读 · 0 评论 -
输入输出格式
题目链接:https://vjudge.net/contest/261184 A略 B#include <stdio.h>int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF){ printf("%d\n",a+b); } return 0;}C#inc...原创 2018-10-22 21:34:05 · 430 阅读 · 0 评论 -
__builtin_函数
__builtin_ctz(x); // 求x的二进制数末尾0的个数__builtin_ctz(0100) == 2;__builtin_clz(x); // 求x的二进制数前导0的个数(ps:一共有32位)__builtin_clz(0100) == 29;__builtin_popcount(x); // 求x的二进制数...原创 2018-09-03 21:03:41 · 869 阅读 · 0 评论 -
位运算
首先我们要知道什么是二进制: 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。 ...原创 2018-08-18 18:25:47 · 380 阅读 · 0 评论 -
完全理解ST稀疏表在线处理RMQ问题及RGQ问题
原博客地址:[https://blog.csdn.net/flushhip/article/details/81079776](https://blog.csdn.net/flushhip/article/details/81079776) ST是什么ST” role=”presentation” sty...转载 2018-07-21 10:29:35 · 306 阅读 · 0 评论 -
输入外挂(整型)
直接拿着用就行...#include <iostream>#include <cstdio>#include <cstring>using namespace std;int n,m;inline int getInt(){ int w = 0,q = 0; char ch = getchar(); while((ch <...原创 2018-07-25 10:03:56 · 202 阅读 · 0 评论 -
HDU 2089 不要62(数位dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 数位dp模板....AC代码:#include <bits/stdc++.h>using namespace std;int a[10];int dp[10][10];int dfs(int pos, int pre, bool limit)...原创 2019-01-17 18:26:38 · 204 阅读 · 0 评论 -
POJ 3252 Round Numbers(数位dp+前导零)
题目链接:http://poj.org/problem?id=3252 题意是找出l到r范围中的二进制中0的个数大于等于1的有多少个。 思路就是我们将它的二进制存起来,然后这里需要判断前导零的情况,不是很难理解,以dp[pos][n0][n1]分别来存第pos位,0的个数,1的个数,然后记忆化搜索就好了。AC代码:#include <iostr...原创 2019-01-17 23:23:12 · 210 阅读 · 0 评论 -
树状数组求逆序数
粘个板子#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define maxn 500005#define ll long longusing namespace std;ll c[maxn <<...原创 2019-03-29 12:07:28 · 162 阅读 · 0 评论 -
POJ 1985 Cow Marathon(树的直径)
题目链接:http://poj.org/problem?id=1985 题意是给了n个点m条边,求任意两点间的最大值。 这道题的题意感觉描述的不清楚,而且还没有数据范围...就是一道裸的求树的直径的题,输入的那个NSWD没用...AC代码:#include <iostream>#include <cstdio>#inclu...原创 2019-02-18 12:49:21 · 171 阅读 · 0 评论 -
SPOJ DETER3 Find The Determinant III(行列式求值取模)
题目链接:https://www.spoj.com/problems/DETER3/en/ 行列式求值取模,高斯消元法AC代码:#include <bits/stdc++.h>#define ll long long#define maxn 205#define inf 0x3f3f3f3fusing namespace std;ll B[ma...原创 2019-01-09 21:37:06 · 492 阅读 · 0 评论 -
SPOJ HIGH Highways(生成树计数模板题)
题目链接:https://www.spoj.com/problems/HIGH/en/ 题意是有n个城市,要修m条高速公路,使这n个城市连通,问共有多少种方案。 这道题就是求无向图的最小生成树的个数,所以直接用生成树计数(不取模的模板就好了)...不知道为啥现在贴的呆码显示出来的缩进都是乱的,凑合着看吧...AC代码:#include <bit...原创 2019-01-09 20:31:46 · 237 阅读 · 0 评论 -
牛客寒假算法基础集训营2 G.处女座与复读机(最小编辑距离)
题目链接:https://ac.nowcoder.com/acm/contest/327/G 莱文斯坦距离,又称Levenshtein距离,是编辑距离的一种。指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。允许的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。AC代码:#include <bits/stdc++.h>#de...原创 2019-01-24 20:32:29 · 174 阅读 · 0 评论 -
HDU 2121 Ice_cream’s world II(最小树形图+虚根)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2121 题意是有n个点(0--n-1),m条有向边,问以那个点作为起点使得最小生成树的权值最小,如果可以构成输出权值和顶点编号,否则输出impossible。 对于这种不定根的题,在不知道虚根这个东西前我是暴力去写的,就是以每一个点都为顶点跑一遍朱刘算法求最小值,按...原创 2019-01-08 22:32:46 · 508 阅读 · 0 评论 -
快速乘
时间复杂度为O(1)的两个数相乘结果超过long long取模的快速运算ll multi(ll x,ll y){ ll ans = (x * y - (ll)((long double)x / mod * y + 1.0e-8) * mod); return ans < 0 ? ans + mod : ans;} 还有一种O(logn)的...原创 2019-01-08 01:15:26 · 166 阅读 · 0 评论 -
NYOJ 139 我排第几个(康拓展开+康拓展开逆运算)
题目链接:http://nyoj.top/problem/139 康拓展开的裸题,对于康拓展开的定义是求当前的排列位于全排列中的第几个,比如132就是123的全排列的第二个,对于康拓展开的求法就是ans = ai*(n-1)!+ai*(n-2)!+....+ai*1!+ai*0!,对于ai的定义是当前这个数的后面还有多少个比它小的数。AC代码:#include &l...原创 2019-01-17 23:42:28 · 233 阅读 · 0 评论 -
K.Upside down primes(求大素数--米勒卡宾算法--Miller_Rabin)
题目链接:https://nanti.jisuanke.com/t/28400 题意是给一串数字,然后对这串数字进行180度翻转,其中1,2,5,8,0翻转完还是它本身,6翻转完是9,9翻转后是6,3,4,7都无法翻转(直接输出no就好)。如果刚开始输入的数字为素数且最后翻转后的数字也是素数的话就输出yes,否则输出no。 刚开始我用了6n±1来判断素数发现只...原创 2018-07-13 14:42:42 · 393 阅读 · 0 评论 -
__gcd()
在翻别人的题解的时候偶然发现了这个函数,然后就去查了查,但是相关内容不多,__gcd(x,y);好像是GNU的内部函数,不是一个标准库里的函数,平时写题直接用这个函数挺方便的,int、long long类型都可以,需要注意的是两个类型必须要相同,还有就是不能用浮点型,当然也可以手写gcd函数,它头文件是algorithm。#include <iostream&...原创 2018-07-06 17:33:28 · 14540 阅读 · 4 评论 -
BZOJ 2038 小Z的袜子(hose) (莫队算法)
2038: [2009国家集训队]小Z的袜子(hose)Time Limit: 20 Sec&amp;amp;nbsp;&amp;amp;nbsp;Memory Limit: 259 MBSubmit: 14985&amp;amp;nbsp;&amp;amp;nbsp;Solved: 6854[Submit][Status][Discuss]Description作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。原创 2018-07-23 14:51:21 · 226 阅读 · 0 评论 -
HDU 1114 Piggy-Bank(完全背包+恰好装满)
就以这道题来简单讲解一下完全背包问题,首先完全背包和01背包的区别在于01背包每样物品只有一个,用完了就不能再用了,而完全背包的物品是有无限个的,所以完全背包又衍生出能不能把背包恰好装满的问题。能否恰好装满问题对dp数组初始化的时候做点改变就行了。 下面是完全背包的核心代码: for(int i=0;i<p;i++){ for(int j=w[i...原创 2018-02-10 16:56:27 · 1067 阅读 · 0 评论 -
HDU 2844 Coins (多重背包+二进制优化)
首先这是一道多重背包的裸题,题意在代码中的注释里有。多重背包就是所给的物品是有限的(任意个),我们则可以把多重背包的问题转换成01背包和完全背包来求解。首先我们先把01背包和多重背包的过程封装成函数,需要用的时候传参过去就好了,然后我来解释一下什么时候用01背包,什么时候用完全背包。我们先不考虑价值,假如说A的重量是3,有10个,B的重量是5,有2个,而你的背包的最大重量为15。对于...原创 2018-02-10 19:08:32 · 554 阅读 · 0 评论 -
最长公共子序列和最长公共子串
首先说一下最长公共子序列和最长公共子串的区别就是前者可以不连续,后者一定是连续的,比如abcde和abced,他的最长公共子序列是abcd或者abce(长度为4),而他们的最长公共子串只abc(长度为3)。 这两个虽然是两个名字,但这都是LCS(Longest Common Subsequence)问题,是很经典的动态规划问题,以NYOJ的一道题为例:传送门。 ...原创 2018-03-26 12:48:36 · 389 阅读 · 0 评论 -
最长回文子序列
和lcs差不多,也可以用递归来写,但是会重复处理很多次,所以还是考虑用动态规划来写。它的动态转移方程为 当str[i]==str[j]时,i->j的最长回文子序列就等于,在 i->j 之间上一个最长回文子序列的基础上+2当str[i]!=str[j]时,i->j的最长回文子序列就等于在i+1->j 和 i->j-1中...原创 2018-03-27 15:56:43 · 2144 阅读 · 3 评论 -
最长单调递增子序列
LIS(Longest Increasing Subsequence)问题也是一个经典的动态规划问题,最简单粗暴的方法就是暴力去枚举了,然后就是用动态规划的方法,首先我们要用dp数组去存每一个数前的最长单调递增序列,先初始化dp[]为1,我们要先遍历一遍数组,然后再用一个for循环遍历i之前的数,如果有pre[j]<pre[i],则有dp[i] = max(dp[i],dp[j...原创 2018-03-27 16:37:38 · 729 阅读 · 0 评论 -
整数划分总结
博客原地址:https://blog.csdn.net/dacc123/article/details/50664738整数划分问题:笼统上说就是将一个整数划分成若干个整数之和的方案数。整数划分有很多不同的问法,也有比较隐晦的问法。比如n个苹果放到m个盘子里,比如n个砖块堆成m个层阶梯。关于整数划分,大概有以下这么多扩展的问题:1、整数n划分成若干整数之和的方案数;2、整数n划分成k个整数之和的方...转载 2018-03-28 15:23:25 · 5485 阅读 · 1 评论 -
八皇后问题(回溯)
在做这道题之前搜了一下回溯和递归的区别,递归就是一个劲的往下搜,搜到头了走不通了,再倒回来换条路继续搜,而回溯就是搜到结果以后再回头重新换个点继续重新搜。 这道题是紫书上P191的一道例题,也是一道经典的回溯搜索题,题的描述就是有一个8*8的棋盘,然后有8枚棋子,问一行或者一排或者对角线上只能放一枚棋子,能有多少种放法。 思路就是按列去搜索,...原创 2018-03-08 22:52:59 · 297 阅读 · 2 评论 -
卡特兰数(Catalan)
卡特兰数又称卡塔兰数,卡特兰数是组合数学中一个常出现在各种计数问题中的数列。个人觉得和斐波那契数列差不多,卡特兰数的地推公式为:pre(n) = pre(0) * pre(n-1) + pre(1) * pre(n-2) + ... + pre(n-1) * pre(0) (n>=2),pre[0] = pre[1] = 1; 以下公式摘自百度百科:另类递推...原创 2018-03-21 17:50:05 · 329 阅读 · 0 评论 -
Hiho Coder 1038 01背包(模板)
01背包的原型就是有N件物品和一个容量为V的背包。放入第i件物品耗费的空间是Ci,得到的价值是Wi,求将哪些物品装入背包可使获得的价值总和最大。而这道题的题意也就是这个意思,01背包的特点就是每种物品仅有一件,可以选择放或者不放。下面是01背包的核心代码:for(int i = 0; i < n; i++){ for(int j = V; j >= c[i]; j--...原创 2018-02-06 23:49:13 · 334 阅读 · 0 评论 -
HDU 1213 How Many Tables(并查集讲解)
这是我写的第一道并查集的题,也应该是一道最简单的入门题了,所以就以这道题说下并查集,其实就是找关系,比如说这道题的题意就是有n个人聚餐,然后他们不一定都互相认识,如果a认识b,b认识c,那么就让他们仨坐一桌,再如果c认识d,d认识e,那么就让这三个人另外坐一桌,所以就是有关系的就坐一桌,然后问需要多少张桌子(忽略每张桌子能坐多少人)。 那么并查集就分为并和查两个过程, ...原创 2018-02-22 16:19:37 · 609 阅读 · 1 评论 -
优先队列定义
有时候会忘,所以写个这个记录一下...struct cmp1{ bool operator ()(int &a,int &b){ return a>b;//最小值优先 } }; struct cmp2{ bool operator ()(int &a,int &b){ ...原创 2018-05-08 15:25:51 · 839 阅读 · 1 评论 -
Sequence
题目链接:http://acm.zzuli.edu.cn/problem.php?id=2264 这道题只需要把两个数组的差值求出来,然后用kmp去求匹配数就好了。裸的kmp。AC代码:#include <iostream>#include <cstdio>#include <cstring>using namespace std...原创 2018-04-21 23:21:21 · 386 阅读 · 0 评论 -
矩阵快速幂
原博客地址:https://blog.csdn.net/qq_16554583/article/details/80182429首先你要会矩阵相乘!!!(不会的话自己百度矩阵相乘满足结合律(A*B)*C = A*(B*C)让原矩阵R乘加速矩阵base的n次方 由此可以与数的快速幂结合 就是矩阵快速幂。 矩阵快速幂的关键是构造。 只要能够构造出原矩阵和基数矩阵,题就解了。 构造时根据递推公式,一步一...转载 2018-05-03 16:53:25 · 168 阅读 · 0 评论 -
归并排序模板
归并排序主要的思想是分治和合并,合并我觉得挺好理解的,分治是用递归实现的感觉不太好理解,我就贴一个模板,拿着就能用了。要是像仔细学习了解归并排序的话可以看下这篇文章传送门,感觉讲的不能再详细了。。。归并排序模板:#include <iostream>#include <cstdio>#include <cstring>#include <...原创 2018-05-09 20:48:16 · 388 阅读 · 0 评论 -
第十四届华中科技大学程序设计竞赛 C.Professional Manager(并查集操作)
题目链接:https://www.nowcoder.com/acm/contest/106/C 题意是有一堆树,当你输入1的时候,将a,b森林合并起来,输入2的时候,将a这棵树从当前森林中分离出来,输入3的时候,查询a所在的森林里有多少棵树,输入为4的时候,判断a和b是否属于同一片森林。因为涉及到了并查集的删除操作,所以需要另外开辟辅助数组,然后需要注意的是,当查询一片森林...原创 2018-05-09 16:18:47 · 233 阅读 · 0 评论 -
Java BigInteger(大数应用)
在做大数的题的时候现敲模板,那么长,敲出来也不知道能敲出来多少个bug,而且java的大数也是无限长的,所以用java去写大数就很方便了,当然没有python方便,但我只会java,python以后学的话再说吧。java的基本的包:import java.io.*import java.util.* 输入的Scanner在这个包里import java.math...原创 2018-04-22 22:02:11 · 1525 阅读 · 0 评论 -
Lucas(卢卡斯定理)模板
Lucas用来求C(n,m)%p的值,适用于解决n,m较大,p(一定为素数)小于1e6的情况。 模板: #include <iostream>#include <cstdio>#include <cstring>#define ll long longusing namespace std;const int ma...原创 2018-04-06 15:48:04 · 429 阅读 · 0 评论 -
HDU 1285 确定比赛名次(拓扑排序&amp;&amp;优先队列优化)
拓扑排序最主要的就是依靠入度进行排序,至于入度是什么,这是一个传送门 点开看看就好了。以这道题为例,裁判不知道队伍的成绩,只知道胜负,自然获胜的越多就越靠前,那么我们需要开一个二维数组来记录谁打败了谁,代码中我用了w表示win,l表示lose,那么vis[w][l]就表示w打败了l,把这个标记为1,说明他们两个比过了,然后我们还需要一个数组来记录入度,既然l输了那么就让dep[l]+...原创 2018-02-08 19:32:23 · 336 阅读 · 0 评论