1.文件操作 :
(发现自己不会打好尴尬 记一下)
int main()
{
freopen("blabblab.in","r",stdin);//blabblab按题目要求输入文件名
freopen("blabblab.out","w",stdout);//这两句放在主程序里的最前面
//中间就是程序啦
fclose(stdin);//然后结尾
fclose(stdout);//同上
return 0;//这个要放最后
}
2. register :
暗♂示系统把某变量存在寄存器里(注意不能用来暗♂示全局变量) 并没有多大用的优化 听说比赛能用??
通常本人加在循环最里面一层=-=因为感觉寄存器放不下太多 不过我对这些设备的知识完全没了解过 只是出于人性化2333~
如 一次用完三行就消掉的子程序——邻接表存边
#define re register
void add(re int u,re int v)
{
edge[++tot].to = v;
edge[tot].next = first[u];
first[u] = tot;
}
又如 最内层的循环=-=就不放了
3. for循环 :
其实当我看见说唱风靡世界 黑人当上美国总统 我就发现了——
发现了for循环可以乱用~~~~~
for (1 初始条件 ; 2 终止条件 ; 3 下次循环时的变量赋值)
其中 循环是先看1 然后看2 就直接进入循环了!!
然后循环完了再看3 之后看2 再进入循环=-= 所以3大概可以直接视为循环 但不能加if之类的
因此 本人发现许多有趣的for循环
I.无限循环自行退出
可用以多组数据输入 特定条件退出~
for ( ; ; ) {++a; if (a > 233) break;}
II.定义多重循环变量
缩行必备~真的缩起来我都被自己吓到了
char q[233][233];
for (int a = 1,len = 0,mx = strlen(a); a <= 233 ; a ++,len = 0,mx = strlen(a))
while (++len <= mx) if (q[a][len] == 'a') ++tot;
III.一行完事型(不走寻常路)
直接在for循环的括号后加分号~缩行必备~本人用于离散化~
for (int a = 1 ; a <= n ; s[a] = a,a ++);
4.位运算(部分)等效表达
位运算比一般运算快~~
还有 >>= 貌似比 >= 快的样子
Expression_1 Expression_2
a * 2 a << 1
a * 2 + 1 a << 1 | 1
a / 2 a >> 1
a = 0 a ^= a
a = a >> 1 a >>= 1
a = a << 1 a <<= 1
a >= 1 a >>= 1
a <= 1 a <<= 1