业界良心整理
知识清单 密码hpxx【Orz】【请勿随便转载】
线性筛各种东西(素数,欧拉,莫比乌斯)
莫比乌斯反演分块法
Tarjan的一类算法(缩环,缩点,连通块,lca)
字符串内容(后缀自动机etc…….
计算几何内容
link_cut_tree(对于子树的操作)
可并堆左偏树
SCOI2016的幸运数字的点分治版本
树形dp,图论的知识,01规划,点分治,树剖,LCT
inline int read()
{
int X=0,w=1; char ch=0;
while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();
return X*w;
}
inline void write(int x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
void get(int &x)
{
char c = getchar(); x = 0;
while(c < '0' || c > '9') c = getchar();
while(c <= '9' && c >= '0') x = x*10+c-48, c = getchar();
}
void put(int x)
{
int num = 0; char c[15];
while(x) c[++num] = (x%10)+48, x /= 10;
while(num) putchar(c[num--]);
putchar('\n');
}
cin.sync_with_stdio(false);
std::ios::sync_with_stdio(false);//cin读入优化;
#include
#include
#pragma comment(linker, "/STACK:102400000,102400000")//开栈 1G
int size=20<<20;
char *x=(char*)malloc(size)+size;
__asm__("movl %0,%%esp\n"::"r"(x));//手动开栈32M
#pragma GCC optimize(2)//O2
#pragma GCC optimize(3)//O3
#include
inline char nc(){
static char buf[100000],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}//读入字符
#include
namespace Read
{
const int S = 1 << 20;
char frd[S], *ihed = frd + S;
const char *ital = ihed;
inline char inChar()
{
if (ihed == ital)
fread(frd, 1, S, stdin), ihed = frd;
return *ihed++;
}
inline int get()
{
char ch; int res = 0; bool flag = false;
while (!isdigit(ch = inChar()) && ch != '-');
(ch == '-' ? flag = true : res = ch ^ 48);
while (isdigit(ch = inChar()))
res = res * 10 + ch - 48;
return flag ? -res : res;
}
char fwt[S], *ohed = fwt;
const char *otal = ohed + S;
inline void outChar(char ch)
{
if (ohed == otal)
fwrite(fwt, 1, S, stdout), ohed = fwt;
*ohed++ = ch;
}
inline void put(int x)
{
if (x > 9) put(x / 10);
outChar(x % 10 + 48);
}
};//借鉴的他人的我自己从来没用过
#ifndef ONLINE_JUDGE
freopen("test.in","r",stdin);
freopen("test.out,"w",stdout);
#endif
char filein[20];
int main()
{
for(int finum=1;finum<=M;finum++){
sprintf(filein,"name%d.in",finum);
freopen(filein,"w",stdout);
out();
fclose(stdin);
}
return 0;
}//数据生成,out()为自己写的数据生成函数,M为最大组数
char fileans[20],filein[20];
int main()
{
for(int finum=1;finum<=M;finum++){
sprintf(filein,"name%d.in",finum);
sprintf(fileans,"name%d.out",finum);
freopen(filein,"r",stdin);
freopen(fileout,"w",stdout);
work();
fclose(stdin);
fclose(stdout);
}
return 0;
}//数据答案生成,work()为你的标准程序
//创建一个后缀为.bat的文件然后在里面写入如下代码
//不要注释部分
set num=0 //设置对拍多少组,可以不要
:st //开始位置
outout.exe //数据生成器的exe文件
std.exe //标程的exe文件
your.exe //你的程序的exe文件
fc ans.out your.out //答案和你的输出比较
set /a num+=1 //将num++,若想拍无限组就不要这句
if "%num%"=="10" goto end //这句是限制只拍10组
if %errorlevel%==0 goto st //没有错就继续
pause //有错就暂停
:end //结束位置