信息学竞赛
文章平均质量分 76
介绍和讲解信息学竞赛相关知识和题目
Hi_KER
Lost in the maze of overwhelming information, chaos becomes inevitable.
展开
-
信息学竞赛常用函数/模板
说明:1.模板中maxn表示最大数据规模,可以用 定义,其中数为数值2.对于含有模板的模板,用类似于STL中的map,bitset的方法定义数学模块扩展欧几里得算法说明:用于计算方程 其中 的一组解void exgcd(int a,int b,int& d,int& x,int& y){ if(!b){d=a,x=1,y=0;retur...原创 2018-10-08 20:21:10 · 2257 阅读 · 1 评论 -
信息竞赛:DFS类搜索专题详细讲解
说明:1.该讲解主要针对已经大致学过搜索,但是想复习或想提高能力或正在备战NOIP的oier2.红色字体为重点1.DFS简介:不加优化的DFS效率很低,常常用于暴力枚举,在NOIP考试中直接考察裸的搜索概率不大。常用方面:枚举子集,枚举排列,搜索枚举答案,图或树的遍历模板:void dfs(int i, ...){ if(i==边界){ 处理; return...原创 2018-09-13 18:11:27 · 1274 阅读 · 0 评论 -
数学基础--康托展开介绍
康托展开的用法:有一个以元素{1,2,...,n}为排列元素的全排列1.给定一个全排列序列,求该序列是所有全排列序列中字典序第几的序列2.(逆用)给定全排列大小n,字典序k,求字典序为k的排列在信息学竞赛中的作用:1.获取排列的id,构建hash表2.计算关于排列序列的问题(如:NOIP普及组2004火星人)3.etc.讲解:(想要更好的理解下面的讲解,请保证你...原创 2018-07-28 19:44:46 · 1870 阅读 · 1 评论 -
信息竞赛中加快程序的输入输出速度
输入输出加速,就是用一位一位的读取或输出的方法达到加速的效果。下面介绍对整数的输入输出加速:输入:输入正数:(要包含cctype库)void scan(int &sca){ char ch=getchar(); while(!isdigit(ch))ch=getchar(); sca=0; while(isdigit(ch)) sca=sca*10+ch-'0',...原创 2018-06-14 17:20:58 · 666 阅读 · 0 评论 -
信息竞赛--打表法讲解
对于数据小又容易超时的题,可以采取打表法打表就是将所有输入情况的答案保存在代码中,输入数据后直接输出就可以了打表法具有快速,易行(可以写暴力枚举程序)的特点,缺点是代码可能太大,或者情况覆盖不完对于不会超时,数据规模适合打表,为了简洁你也可以打表例一:NOIP2008T2这道题n<=20完全可以打表,代码(生成答案):#include<iostream>...原创 2018-07-24 17:33:59 · 20291 阅读 · 3 评论 -
信息竞赛数据生成器制作
前言写数据生成器是实现对拍必不可少的环节,只有写出正确的数据生成器让对拍器正常工作。关于对拍器的实现:对拍器一.随机数生成我们知道,用rand()可以产生之间的伪随机数,而且在使用rand()之前,我们往往要使用:srand(time(0));来初始化随机数种子。其中 RAND_MAX 往往是short的最大值,为32767(一般在Windows系统下),有些情况下这...原创 2018-11-08 21:20:31 · 3114 阅读 · 0 评论 -
信息学竞赛对拍器的设计
下面的内容是我很久以前写的,内容冗长,不怎么实用,比较简洁的代码请参考:1.对拍器2.数据生成器信息学竞赛中,很多时候我们需要检验需要提交程序的正确性,但手动测试有太慢而且不准确。所以我们可以写两个程序,一个用于提交,另一个测试(通常是比较正确但是往往用暴力写的,会超时),当然写对拍器之前要写数据生成器,以后介绍,这是最简单的A+B Problem的数据生成器:#incl...原创 2018-06-12 21:28:44 · 1542 阅读 · 0 评论 -
C++中高精度正整数运算代码模板
背景:C++中有时我们会遇到(unsigned)long long也表示不了的大整数,这个时候我们常常会用高精度为了简化使用过程以及模板化,我们不妨用struct或class来定义详解:框架:template<int SIZE>//用来限制最大表示位数 class bign(){ private://在class外不能调用 int a[SIZE],len;//高精度整数,用数...原创 2018-07-10 11:36:38 · 1349 阅读 · 0 评论