noip中有用的STL
- 格式:docx
- 大小:165.50 KB
- 文档页数:5
NOIP2015选手及指导老师须知(windows)一、NOIP2015提高组考试时间为11月7日、8日上午8:30-12:00,普及组考试时间为11月7日下午2:30-6:00。
选手可提前20分钟进入考室,不得携带书包、书、纸、U盘、手机、计算器。
选手需持准考证、身份证(或其它有效证件)按座位号(非准考证号)就座进行考试。
迟到15分钟不得进考场,开考60分钟后方可离场。
二、11月6日下午2:45-5:00为提高组和普及组试机时间。
试机时,提供一道题目(见附录),供选手熟悉考试环境及选手信息的填写。
对于语言环境有任何问题请于6日试机的时候提出。
正式比赛时,每位选手请根据座位号入座。
如发现问题,向监考人示意协助解决。
三、选手提前20分钟入场后,右键单击屏幕右下角的(FrC客户端),填写选手信息(如右图)。
准考证一栏应填写选手准考证号。
其中,FJ两个字母必须大写;“-”不是下划线,而是减号。
在比赛开始前,考务人员将检查选手在FrC客户端中的准考证号。
在收取源程序时,若发现选手使用错误的准考证号或是他人的准考证号,一律以0分处理。
“工作文件夹”由软件默认,一般为最后一个盘,如“F:\”(个别考场根据监考人员通知)。
开始考试后,选手需要在工作文件夹上创建以选手准考证号命名的文件夹。
答题前,由选手为每道试题再单独建立一个子文件夹,子文件夹名与对应的试题英文名相同(英文小写,参见试题封面页),选手提交的每道试题的源程序必须存放在相应的子文件夹下(如右图示例)。
未按规定建立子文件夹、建立的子文件夹名出现错误、或提交的源程序没有存放在相应的子文件夹下等都会导致选手成绩为0分,责任由选手承担。
选手信息必须在考试正式开始前填写完毕,考试开始后不允许更改选手信息。
整个考试过程中,选手不得关闭FrC客户端。
四、每位选手提交的源程序后缀名只能为.c/.pas/.cpp之一,后缀名均用小写字母。
例如:题目有cashier、dune、manhattan三题,某选手分别是用C、Pascal、C++答题,最终提交的源程序为cashier.c、dune.pas、manhattan.cpp。
CSP-J(NOIP普及组)历年复赛真题考察内容(1998~2021)1.CSP-J 2021思维、选择结构排序、归并排序⼤模拟双向链表、模拟2.CSP-J 2020位运算、进制转换桶排序栈、深搜动态规划(⾼级)3.CSP-J 2019字符串模拟、队列背包⼴搜、最短路4.NOIP2018 普及组字符串枚举、预处理动态规划(⾼级)⼆叉树5.NOIP2017 普及组顺序结构结构体排序深搜、剪枝⼆分、动态规划6.NOIP2016 普及组⼀重循环回⽂⼤模拟、队列枚举、前缀和7.NOIP2015 普及组⼀重循环⼆维数组组合数学贪⼼、优先队列8.NOIP2014 普及组模拟枚举、gcd模拟、找规律动态规划(⾼级)9.NOIP2013 普及组⼆重循环栈动态规划(⾼级)拓扑排序10.NOIP2012 普及组⼀重循环、质数模拟、取模背包、动态规划最短路11.NOIP2011 普及组进制转换字符串归并排序动态规划(⾼级)、栈12.NOIP2010 普及组⼆维数组模拟贪⼼贪⼼、博弈13.NOIP2009 普及组模拟结构体排序约数动态规划(⾼级)14.NOIP2008 普及组字符串贪⼼动态规划(⾼级)结构体排序贪⼼贪⼼⾼精度16.NOIP2006 普及组⼀维数组01背包模拟进制转换17.NOIP2005 普及组⼀维数组⼀维数组01背包⾼精度18.NOIP2004 普及组⼀重循环贪⼼递归、⼆叉树STL、深搜19.NOIP2003 普及组模拟动态规划(⾼级)组合数学、卡特兰数⾼精度20.NOIP2002 普及组⼀重循环深搜深搜递推、动态规划21.NOIP2001 普及组递推、递归枚举、gcd⼆叉树⼀元⼀次⽅程、模拟不等式、数论动态规划、⾼精度深搜23.NOIP1999 普及组找规律进制转换贪⼼24.NOIP1998 普及组简单数学、枚举、进制转换⾼精度深搜。
在学习STL语言的编程方式之前首先要了解西门子STL语言的最基本的知识:状态字用于表示CPU执行指令时所具有的状态。
下列情况都将影响状态字的变化:1、一些指令是否执行或以何方式执行,可能取决于状态字中的某些位;2、执行指令时也可能改变状态字中的某些位;3、也能在位逻辑指令或字逻辑指令中访问并检测他们;状态字的结构如下:FC首位检测位:若FC=0,表明一个梯形逻辑网络的开始,或第一条指令。
CPU对第一条指令的检测,产生的结果直接保存在状态字的二次检测存放在RLO中的0或1被称为首位检测结果。
FC位在逻辑串的开始总是0,在逻辑串指令位为1,输出指令与逻辑运算有关的转移指令(表示一个逻辑串结束的指令)将FC清零。
RLO逻辑操作结果:该位存储逻辑指令结果。
在逻辑串中,RLO位的状态能表示有关信号流的信息。
RL O的状态为1,表示有信号流(通),0表示无信号流(断)。
可用RLO触发跳转指令;STA状态位,状态位不能用指令检测,它只是在程序测试中被CPU解释并使用,如果一条指令是对存储区操作的位逻辑指令,则无论是对该位读或写操作,STA总是与该位的值取得一致;对不访问存储区的位逻辑指令来说,STA位没有意义,此时它总被置位1。
OR或位,在先逻辑与后逻辑或的逻辑串中,OR位暂存逻辑与的操作结果,以便进行后面的逻辑或运算。
其他指令将OR位清零;OS溢出状态保持位:OV被置1时,OS也被置1;OV被清零时,OS仍保持。
所以它保存了OV位,可以用于指明在先前的一些指令执行中是否产生过错误。
只有下面的指令才能复位OS位:JOS(OS=1时跳转),块调用指令和块结束指令;OV溢出位,溢出位为1,表明一个算术运算或浮点数比较指令执行时出现错误(错误:溢出,非法操作,不规范格式)。
后面的算术运算或浮点数比较指令的结果正常的话,OV位就被清零。
CC0&CC1称为条件码1和条件码0.这两位结合起来用于表示在累加器1中产生的算术运算或逻辑运算结果与0的大小关系。
NOIP复赛复习10STL容器与字符串模板STL容器STL 容器是一些模板类,提供了多种组织数据的常用方法。
常用的STL容器包括pair(组合)、list(列表,类似于链表)、vector(向量,类似于数组)、priority_queue(优先队列)、set(集合)、map(映射)、stack(栈)等,通过模板的参数我们可以指定容器中的元素类型。
1、pair相当于一个Struct,访问方式举个例子:pair<int,int> p; 那么第一个成员便是p.first、第二个p.second,pair使用起来很方便,简单快速高效,可以当做一个二元struct使用,而且它定义了比较的方法,先根据第一个成员比较,在根据第二个,所以如果你的比较运算符是这样,那么你就不需要定义比较函数了,而struct是不能直接进行比较的,构造pair的方法:make_pair。
例:#include <cstdio>#include <algorithm>#include <cstring>#include <utility>#include <functional>using namespace std;const int N = 1010;typedef pair<int, int> p;p a[N];int main() {int k = 0;a[k++] = p(3, 4);a[k++] = p(3, 100);a[k++] = p(1, 2);a[k++] = p(4, 10);sort(a, a+k, greater<p>());for (int i = 0; i < k; i++) printf("%d %d\n", a[i].first, a[i].second);return 0;}list是一个循环链表。
noip中有用的STL:
<algorithm>:快排,堆排,归并,二分查找(比bsearch强多了),再加上max(),min(), swap()等一堆乱七八糟的东西
<queue>优先队列(堆)
<map>平衡树。
用起来可能比hash稍慢点,但noip不会卡的
<bitset>位运算神器。
常用的应该就这些了
《数据结构》一定要学好
《算法导论》不错..
关于初赛我也没什么可说的,就到这吧!想起来再补充~
P4:经常听他们说对拍,对拍是什么?
A4:对拍是一种对照调试程序,用于比较2个程序对于相同测试数据的结果是否相同。
比如你写了个高效的算法,但是不知道对不对;你又写了个效率很低但是不会出错的算法,你就可以使用对拍比较,看看2者答案相同与否。
对拍可以检验出程序的正确性,但是一定要保证对拍的2个程序中有一个是绝对正确程序!
下面说说对拍怎么用。
对拍是用批处理命令(.bat)来完成的,需要你在任意地方建立一个文件夹,文件夹下面要有这几个个东西:
1你的对拍.bat命令
2数据生成器用你的编译器写一个可以生成一组格式正确的测试数据的程序,编译成exe 文件(生成的数据要保存在一个文件中,如xxx.in你的2个题目程序就用xxx.in作为输入源)
3你的2个程序,要用文件输入输出
4xxx.in作为被调试的2个程序的输入文件(事先需要自己手动建立一个,否则报错)
5算法1.out和算法2.out2个程序的输出文件(也要自己手动建立否则对拍会报错)
接下来,我写一个相对简单的对拍批处理命令,把它写进记事本里,然后保存把文件后缀改成.bat就可以。
@echo off
:loop//定义一个可被goto的标签loop(好像是这样的吧...)
数据生成器.exe//先运行数据生成器生成数据,否则xxx.in为空
算法1.exe
算法2.exe//你的2个程序,顺序不重要。
运行后自动读取xxx.in中的测试数据
fc算法1.out算法2.out//要比对的2个输出文件
if not errorlevel1goto loop
pause
goto loop
本对拍程序是不断循环执行以上语句,直到二者答案不相符就停止运行。
这时选手可以查看xxx.in内的数据,并对此作出修改。
其实就是一个自动比对答案的东西。
以下是一个完整的对拍文件夹内的文件:
祝愿各位能在noip2013中取得好成绩!。