
acm
文章平均质量分 59
月下酌客
这个作者很懒,什么都没留下…
展开
-
数论基础
预备知识:一: a*b%c=(a%c)*(b%c)%ca^b%p=(a%p)^b%pa/b%p=a*(b^p-2)%p(p为素数)a*b的逆元模p二: 快速幂 求a^b(思想是二分法)a^6=a*a*a*a*a*aa^6=(a*a*a)^2这样二分后,计算的次数大大减少了代码如下:long long q_pow(int a,int b)//快速幂计算 a^b%p原创 2017-02-21 17:08:14 · 412 阅读 · 0 评论 -
关于凸包——Graham扫描法
首先是凸包的第一种解法,graham扫描法。算法的步骤如下:1 首先我们要找到凸包的一个顶点,这个顶点的y坐标要最小,相同的y的情况下,选择更靠左的点2 对给出的顶点集进行排序,按照极角递增的顺序进行排序?如何进行操作呢,我们可以用我们矢量积的性质,如果矢量积为正,b矢量在a矢量的逆时针方向。极角顺序相同的,我们把距离近的那一个排在前面。3 完成排序后,我们将p0,p1入栈,对i=2原创 2017-07-21 18:57:12 · 504 阅读 · 0 评论 -
扫描线+线段树求矩形面积的并
1 如何求?求两两相邻竖线间的矩形面积。还要记录覆盖的边2 用到的结构体存储每一条竖线struct scanline{double y1,y2,x;int f;//覆盖则为-1}线段树维护每条竖线在y轴上的可行值struct segtree{int l,r;//线段树左右端点double ql,qr;//实际的竖线上的上下端点int c,cnt;原创 2017-05-18 11:31:41 · 411 阅读 · 0 评论 -
用单调队列的思想优化一些dp问题
给你n,m。n代表了有几个数,m代表几个连续区间的题目大意是给你一组数据,求某个连续的区间内最大和为多少正常dp思想 dp[i]=max(dp[j],sum[i]-sum[j]) j的范围为i-m这样的化每次都要找sum[i]-sum[j]的最大值,即找sum[j]的最小值,时间复杂度会很高。因此这里想要用单调队列来维护最小值。栈底存放最小值,每次输入数据的时候,如果比队首元素大,原创 2017-05-16 17:23:14 · 278 阅读 · 0 评论 -
deque,vector,list
*deque: 是一个double-ended queue, 1)支持随即存取,也就是[]操作符, 2)支持两端操作,push(pop)-back(front),在两端操作上与list效率差不多 因此在实际使用时,如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面的原则: 1、如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vect原创 2017-05-11 18:41:15 · 228 阅读 · 0 评论 -
华师校赛I题 大力的gcc
题目大意是有3个数n,m,k。n 代表了序列的长度,m表示来回的次数,k表示最大的搬运量。一次可以搬运2个,现在求出在m次下,最大可以搬运的重量思路:贪心的思想不用说了,主要说下multiset的用法multisets,可以让s中的数有重复,并且自动对s进行升序一些操作:multisetsmultiset ::iterator it1,it2;//定义指针it2=s.l原创 2017-05-10 17:39:20 · 209 阅读 · 0 评论 -
校赛D GCD关于斐波拉契(待更)
一:斐波拉契可以通过矩阵快速幂求第n项。构造res矩阵【1 11 0】.对其进行矩阵快速幂即可。一般会让你求%p.这时候就要边算边取余了二:矩阵快速幂的前n项和为F(i+2)-1题目大意就是让你求gcd(1+Sn,1+Sm)%p的值代码:#include#includeusing namespace std;typedef long long ll;int原创 2017-04-23 18:20:35 · 228 阅读 · 0 评论 -
我的ACM训练计划
经历过了一些事,接下来可以用心的搞算法了。 最重要的是基础打牢,下面是一些基本的算法按照优先级来做(已经接触和知道的): 最薄弱的数据结构:字典树,线段树,扫描线,树状数组,堆排序,并查集,KMP算法,RMP。基本的stl用法要熟练 一些图的算法:最短路径,最小生成树,拓扑排序,匈牙利算法,KM算法, 二分的思想以及哈希表的使用 dp专题,包括简单的一些数位dp,树形原创 2017-04-17 23:27:36 · 433 阅读 · 0 评论 -
4.9武大校赛E题 矩阵快速幂
题目大意:n个顶点,m条边,现在要求你在T步内能够从i走到j,求一共的方案数目解题思路:用到了离散数学的知识,从i到j的通路数=图的邻接矩阵的T次幂(这里要用到一下矩阵快速幂)实验代码:#includeusing namespace std;typedef long long ll;const ll mod=1e9+7;int N,M,T;struct Matrix原创 2017-04-10 19:22:12 · 243 阅读 · 0 评论 -
求逆序数的几种做法
1 归并排序#include #includeusing namespace std; #define max 1000001 long long a[max],b[max]; long long count; void Merge(long long a[], int start, int mid , int end) //归并排序的合并部分原创 2017-04-09 23:13:43 · 562 阅读 · 0 评论 -
蓝桥杯
最近遇到了一种类型的题目,恰巧蓝桥杯也碰到了。大概类似于完全背包吧。给你一组不同的值,每个值可以有无限多个。求有多少个数,是这些数组合不出来的#include#includeconst int N=1000010;int trued[N];using namespace std;int a[110];int gcd(int a,int b){if(a>b)原创 2017-04-09 17:22:01 · 493 阅读 · 0 评论 -
Nim博弈
Nim游戏的概述:还记得这个游戏吗?给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取。最后拿光珍珠的人输。后来,在一份资料上看到,这种游戏称为“拈(Nim)”。据说,它源自中国,经由被贩卖到美洲的奴工们外传。辛苦的工人们,在工作闲暇之余,用石头玩游戏以排遣寂寞。后来流传到高级人士,则用便士(Pennies),在酒吧柜台上玩。最有名的玩法,是把十二枚便士放转载 2017-03-28 17:17:23 · 195 阅读 · 0 评论 -
acm的一点小常识
1 这个函数可以查看出每种类型的所占字节数和范围#include#includeusing namespace std;int main(){ cout cout ::max)();}2原创 2017-03-03 16:43:23 · 249 阅读 · 0 评论 -
poj2109
复习大数相加,相乘问题的基本思路double型数据的范围是-2^1024~2^1024 精度为16位数字,也就是说当结果超过这个范围时,后面的数字都为0.float型数据的范围是-2^128~2^128精度为8为数字原创 2017-03-03 16:42:39 · 306 阅读 · 0 评论 -
STL入门
1 检索与排序#includesort函数可以对数组和vector数组进行排序,对于数组sort(a,a+n),对于vector,vector(b.begin,b.end)lower_bound(a,a+n,x)的作用是在数组a中查找第一次出现x的位置2 不定长数组vector vector a[maxn];3 集合set 把元素存放在set中时,已经排好了顺序 如何原创 2016-09-17 16:04:45 · 295 阅读 · 0 评论 -
map用法
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。转载 2016-12-03 15:46:12 · 223 阅读 · 0 评论 -
快速幂与矩阵快速幂
1 结论(a*b)mod c=((a mod c)*(b mod c))mod ca^b%c=((a%c)^b)%c2 快速幂的转置算法: a^b%cint ans=1;int a=a%c;elsewhile(b>0){ if(b%2==1) ans=(ans*a)%c; ans=(ans*a)%c; b=b/2; a=a*a%c;}就是这么原创 2016-12-05 20:24:16 · 213 阅读 · 0 评论 -
求欧拉函数的几种方法
1 如果需要一直使用,可以打表预处理。根据递推的关系式 函数init_phi() 2 O根号n的复杂度: phi()函数 3 筛法先求素数 O(x): x为根号n内的素数 prime_phi()函数includeincludeincludeusing namespace std; typedef long long ll; const int maxn=5e4; bool isprime[原创 2017-08-17 11:06:39 · 1890 阅读 · 1 评论