ACM技巧
Werky_blog
这个作者很懒,什么都没留下…
展开
-
关于数组作为局部变量超时
较大数组尽量写成全局变量,写成局部变量容易超时。1、栈区(stack segment):由编译器自动分配释放,存放函数的参数的值,局部变量的值等。在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间原创 2017-09-28 22:13:56 · 825 阅读 · 0 评论 -
模板:输入输出挂
ll read(){ ll x=0,f=1;char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}转载:...转载 2017-10-19 21:05:30 · 300 阅读 · 0 评论 -
ACM无穷大设置
无穷大[cpp] view plain copyconst int INF = 0x3f3f3f3f; 这样设置的好处是可以通过memset直接对连续的内存进行无穷大初始化,如下[cpp] view plain copymemset(blockptr,0x3f,blocksize); 无穷小[cpp] view plain copyconst int NINF = -INF -1; cons...转载 2018-03-24 21:35:30 · 254 阅读 · 0 评论 -
模板:莫队算法
struct Query{ int l,r,id,block; Query(){} Query(int L,int R,int ID):l(L),r(R),id(ID){ block=l/len; } bool operator <(const Query rhs)const{ if(bloc...原创 2018-05-12 14:04:58 · 190 阅读 · 0 评论 -
模板:扫描线
矩形有重叠,求总面积。横纵两条扫描线:#include<bits/stdc++.h> using namespace std; double x[2002],y[2002];//最多100个矩形,所以最多只有200条横线或纵线 double a[1002][4];//矩形实际坐标,分别是左下角横、纵,右下角横、纵bool cover[2002][2002]; c...原创 2018-05-12 13:52:58 · 500 阅读 · 0 评论 -
模板:尺取法
二分+尺取//给一个长度为n的数组a,取一个子区间的第k大。//把所有子区间的第k大放入b数组,求b数组的第m大。ll check(int x){ int l=0,r=-1,cnt=0; ll sum=0; while(r<n){ if(cnt<k){ r++; if(a[r...原创 2018-05-12 14:00:07 · 166 阅读 · 0 评论