随笔分类 - 小芝士&错误合集
摘要:基本设置 problem.conf 中一行只能含有一个设置(不然可能会出现奇怪的错误?) use_builtin_judger 大多数题的 problem.conf 里都要有 use_builtin_judger on 这句话,这表示您需要使用 OJ 自带的评测系统来评测这道题。 如果您出了一道奇奇
阅读全文
摘要:奇妙算法。快速判大质数的奇怪算法。 code: inline bool check(int wh){ if(wh%2==0)return false; int p=wh-1,q=1; while(p%2==0)p/=2,q++; for(int i=1;i<=K;i++){ int x=rand()
阅读全文
摘要:set支持二分查找,毕竟它本身就是一个平衡树(似乎是传说中的红黑树?)。同时erase操作也很方便,演示: set<int>s; for(int i=1;i<=5;i++)s.insert(i); //data in set:1 2 3 4 5 set<int>::iterator it=s.low
阅读全文
摘要:复习。主要是考场上要用迭代器的时候突然忘了。我是傻逼。放个板子以防以后忘了。 map<int,int>a; a[3]=3; a[2]=2; a[1]=1; a[100]=1; map<int,int>::iterator it=a.begin(); while(it!=a.end()){ if(it
阅读全文
摘要:先说鸽巢原理就是抽屉原理,听起来更高大上一点。 有这样一个结论:任意大小不小于N的整数集合必然存在一个非空子集,集合内元素之和可以整除N。考虑把集合内的元素拿出来,随便搞个排列求前缀和,显然如果存在两个前缀和模N相同那么之间的元素可以构成符合条件的子集。由于鸽巢原理,N个数可以构成N+1个前缀(包括
阅读全文
摘要:把板子挂在这里,以后要用下载即可。string转number似乎要手写一个函数来处理,但总比char数组来得方便些(某些情况下)。其它的没什么,重要的是如果读取答案一部分就可以判断答案正确也必须把所有内容全部读完,否则会直接返回wrong的讯息。 板子:download
阅读全文
摘要:sscanf是用来读取字符串中数字的一种简便方法,当然手写一个函数也可以,但有一个无法处理string的缺陷。用法如下: char w[10]="123"; int a; sscanf(w,"%d",&a);printf("%d\n",a); sscanf(w,"%2d",&a);printf("%
阅读全文
摘要:一个听起来很高大上的定理?其实之前一直都知道有这么个东西,但却一直没用过…… 可以推广,就是洛谷上的板子: $$\sum\limits_{i=1}^Na_ix_i=c\iff gcd(a_1,a_2\dot
阅读全文
摘要:之前学过,但现在已经忘了。推一遍柿子吧。 有一些设定 可以构造解如下: $$x=\sum\limits_{i=1}^Na_i\times M_i\ti
阅读全文
摘要:代码如下: #pragma GCC optimize(3) 更改数字即可。考试不能用,但平时可以拿来卡卡常。
阅读全文
摘要:好久没写了,在写最小费用最大流的时候翻车了。 最小费用最大流的原理是SPFA跑一个费用最短路生成树之后在树上跑网络流,所以应该记录一个vis来防止孩子访问父亲的情况(因为反边的费用刚好是相反数)。警示。
阅读全文
摘要:有坑。靠今天考试一道最简单的二分答案喜提44分。傻逼了。 主要是实数域的二分答案有些东西需要注意。一个是eps一般设置成精度要求的后一位,而在二分之前应该把r加上一个eps,防止答案到不了r这个点。最后取答案的时候用mid而不是l,输出的时候一定要补零。
阅读全文
摘要:今天写一道线段树的板子被卡了。鬼知道是不是评测机不给力,但还是迫使我学习了一种新写法。 众所周知树状数组常数小。于是可以考虑维护两棵树状数组,一棵维护原数列的差分,另一棵维护原数列差分乘上该差分下标。区间修改可以直接按照差分的规则,反正是单点修改。查询有公式( a 为原数组, c 为差分数组): $
阅读全文
摘要:在做这道题的时候了解到一个结论,即最小生成树一定是所有生成树的最大边最小的。可以用克鲁斯卡的算法过程来理解,即假如第k小的边被加入最小生成树中,那么前k-1条边肯定无法构成生成树,也就是说不存在一棵生成树使得所有边都比第k条边小。所以最小生成树跑出来的最大边肯定就是答案。
阅读全文