noip2012开车旅行
NOIP2012普及组复赛第4题文化之旅
满分搜索的话,按理用下面几个剪枝就可以了.1、最优性剪枝 (Ans (Nowdist当前走过的路程,MinDist至少还要走多远).2、删去所有影响终点的城市
NOIP2012普及组复赛第4题文化之旅
满分搜索的话,按理用下面几个剪枝就可以了.1、最优性剪枝 (Ans (Nowdist当前走过的路程,MinDist至少还要走多远).2、删去所有影响终点的城市(不可能走到的……)3、倒搜 说实话给 PJ 组的写 STD 时是这么写的……AC过了.虽然怎么说倒搜似乎有些说不过.另把倒搜换成下面的剪枝也是可以过的.设定一个X,从终点向外拓展X层.每走一个城市看是否这X层中的任意一层被封锁.上述的确有些郁闷,因为X取小作用不大,取大又降低了程序运行速度.可以考虑将所有拓展层全部求出来.每2、3层跳跃一次.100个点的图如果想卡人的话,层数不会太多的,最多10层左右.不过后面的没有实现了.STD X 取1就可以过.程序在学校的说……明天中午发过来>_
noip2012年day1 第二题
主要是高精度除和贪心算法type hac=array[0..2000] of longint;dachen=recordl,r,j:longint;end;var a:array[1..10000] of dachen;i,p,q,n,m,big,t:longint;l,r,s:hac;procedure print(x:longint);beginif x=0 thenwrite('0000')elsecase trunc(ln(x)/ln(10)+1) of4:write(x);3:write('0',x);2:write('00',x);1:write('000',x);end;end;procedure simul(x:longint);var i:longint;beginfor i:=1 to s[0] dobegins[i]:=s[i]*x+s[s[0]+1];s[s[0]+1]:=s[i] div 10000;s[i]:=s[i] mod 10000;end;while s[s[0]+1]<>0 do inc(s[0]);end;procedure sidiv(x:longint);var i:longint;beginfor i:=s[0] downto 1 dobegins[i-1]:=s[i-1]+(s[i] mod x)*10000;s[i]:=s[i] div x;end;s[0]:=2000;while s[s[0]]=0 do dec(s[0]);end;beginassign(input,'game.in');assign(output,'game.out');reset(input);rewrite(output);readln(n);readln(p,q);for i:=1 to n dowith a[i] dobeginreadln(l,r);j:=l*r;if bigt thenwith a[i] dosimul(l);sidiv(a[t].r);write(s[s[0]]);for i:=s[0]-1 downto 1 do print(s[i]);writeln;close(output);end.
NOIP2012初赛试题及答案
第十八届全国青少年信息学奥林匹克联赛初赛 普及组参考答案 一、单项选择题(共20题,每题1.5分,共计30分) 1 2 3 4 5 6 7 8 9 10 A B A B C C B C A A 11 12 13 14 15 16 17 18 19 20 B D B C C D C A C B 二、问题求解(共2题,每题5分,共计10分) 1. 5 2. 2880 三、阅读程序写结果(共4题,每题8分,共计32分) 1. 10 2. 6 3. 14 4. ACBBADAD 四、完善程序(前2空每空2分,后8空每空3分,共计28分)以下各程序填空可能还有一些等价的写法,各省赛区可请本省专家审定和上机验证,可以不上报CCF NOI科学委员会检查. Pascal语言1 ① 0 ② y[j] y[j]) ③ inc(f[i]) (或f[i] := f[i] + 1) ④ f[i] >= max_f(或max_f
noip2012普及组山东初赛分数线
1.整点的坐标有四种情况:(奇,奇),(偶,偶),(奇,偶),(0,0)前三种,单一情况下,需要2点即可;所以4点即能满足,因为最坏情况下,三种情况各一种,另一点任意;如果算上(0,0),需要5个点才能满足要求,因为(0,0)只能与(偶,偶)情况满足2.先让大陆选手坐成一周的排列方法有N1=A(5,5)/5港澳选手插入到5个空中的排列种数有N2=A(5,5)就坐方案的总数是N=N1*N2=2880
2012 noip提高组复赛的考试流程(浙江)
NOIP2012上机环境分类软件版本说明系统软件Windows XPSP3操作系统FP-gdb6.8命令行启动编译器Gcc4.4.4C编译器G++4.4.4C++编译器FreePascal2.4.4/2.0.4Pascal编译器调试器Gdb7.1命令行启动集成开发环境GUIDE1.0.2单文件程序IDE(C/C++/Pascal)Dev-cpp4.9.9.2C/C++ IDEFreePascal2.4.4/2.0.4Pascal IDE注意:Dev-Cpp连接的编译器版本为MinGW 3.4.2。
与NOI官方评测GNU 4.4.4有较大差距,请慎用。
FreePascal提供了2.4.4和2.0.4版本,安装在C盘FPC目录下,同时在桌面上创建了2个不同的快捷方式,同学根据需要,可以自行选择。
Guide连接的编译器默认MinGW4.4.4和FreePascal2.4.4。
在所有硬盘分区中,C盘保护,其他盘不保护。
关于NOIP复赛阶段若干问题的重申与说明为保证NOIP复赛评测工作顺利进行,现针对NOIP复赛的若干问题做如下重申与说明。
此说明适用于各届NOIP,请各省特派员保证于复赛前周知所在省指导教师及选手。
一.关于复赛用机与评测结果的重申与说明根据前已制定的NOIP工作规范化和整体规划要求,特重申如下:NOIP复赛用机应以NOI Linux为操作系统。
最后成绩的确定以CCF NOI 科学委员会在NOI Linux系统及其指定的评测工具下的评测结果为准。
各省由于评测环境不同而产生的问题(例如,windows下C/C++的__int64类型在Linux下无法通过编译,输入文件中windows下换行符与Linux下换行符的表示方式不同,等等)其后果由各省自行负责。
二.关于输入文件格式与输出文件的比较方式约定2.1 输入文件中除相邻元素间的一个空格符外,没有其它多余的空格。
输入数据的每一行末尾都有一个回车,包括文件的最后一行数据在内(即输入文件最后一行数据的末尾也有一个回车)。
除此之外,输入文件中没有其它不可见的控制符号。
2.2 对输出结果将在过滤输出文件的行末空格和文尾回车后采用全文比较方式。
输出文件在行首(开头)不允许有多余的空格。
输出文件的前面和中间不允许有多余的空行。
当同一行中有多于一个元素时,相邻的元素间有且仅有一个空格分隔符,不允许使用其它分隔符号。
2.3行末空格符和文件末尾回车符的有无对选手答案正确性的判断不产生影响。
2.4如有特殊规定将在题目中给出详细说明并参见样例。
2.5各省上报提交的选手答案必须严格符合网上公布的上交文件格式和目录结构。
在复评中如因文件格式或目录结构不符合要求而出现的问题及其后果,由各省自行负责。
哪位大哥知道2012noip山东省一等奖分数线啊。
。
。
。
。
。
本人NOIP提高组2012一等)不管你有多自信.vijos,你数学好么。
章节练习:字符串处理、模拟题、搜索与剪枝、动态规划初步、LCA、最小生成树://www,不好就别指望了,三个月没基础只能靠数学好。
不过还是建议了解所有语法之后、图论基础、数据结构://www、线段树或者RMQ、最短路径,从基本题一直练到难题,看书之余还要刷题,推荐http。
注意几个必备算法:二分查找.vijos、强连通分量.org 在线题库,十分经典、网络流、动态规划、搜索,我还是要说...
请教NOIP2012初赛(普及)第二大题和第四大题的第二小题怎么做?...
二、1.整点的坐标有四种情况:(奇,奇),(偶,偶),(奇,偶),(0,0)前三种,单一情况下,需要2点即可;所以4点即能满足,因为最坏情况下,三种情况各一种,另一点任意;如果算上(0,0),需要5个点才能满足要求,因为(0,0)只能与(偶,偶)情况满足2.先让大陆选手坐成一周的排列方法有N1=A(5,5)/5港澳选手插入到5个空中的排列种数有N2=A(5,5)就坐方案的总数是N=N1*N2=2880四、2.const SIZE:=25;var \x05used:array[1.. SIZE] of boolean; \x05data:array[1.. SIZE] or integer; \x05n,m,i,j,k :integer; \x05flag:boolean; begin \x05readln(n,m); \x05fillchar(used,sizeof(used),false); \x05for i:=1 to m do \x05begin \x05\x05data[i]:=i; \x05\x05used[i]:= true; //used[i]表示i已经在排列里用过\x05end; \x05flag:= true; \x05while flag do \x05begin \x05\x05for i:= 1 to m-1 do write(data[i],' '); \x05\x05writeln(data[m]); \x05\x05flag:= ① ; //只有flag=true才输出,所以默认为没有找到下一个满足的排列\x05\x05for i:=m downto 1 do \x05\x05begin \x05\x05\x05② ; //i位置的元素反正是要换的,所以把相应的数对应的used改为false\x05\x05\x05for j:= data[i]+1 to n do //i位置以后的元素都需要改变\x05\x05\x05\x05if used[j]= false then //如果j示在排列里用过,则可以用\x05\x05\x05\x05begin \x05\x05\x05\x05\x05used[j]:= true; \x05\x05\x05\x05\x05data[i]:= ③ ; //上一句j对应的used标为true,就是要用j来填到data[i]位置\x05\x05\x05\x05\x05flag:= true; //找到了新的排列\x05\x05\x05\x05\x05break; \x05\x05\x05\x05end; \x05\x05\x05if flag then //完善新排列,i位置之后的都要从最小排起\x05\x05\x05begin \x05\x05\x05\x05for k:=i+1 to m do //直到排出m个数\x05\x05\x05\x05\x05for j:=1 to ④ do //每个位置,都要从1到n选数\x05\x05\x05\x05\x05\x05if used[j]= false then \x05\x05\x05\x05\x05\x05begin \x05\x05\x05\x05\x05\x05\x05data[k]:= j; \x05\x05\x05\x05\x05\x05\x05used[j]:= true; \x05\x05\x05\x05\x05\x05\x05break; \x05\x05\x05\x05\x05\x05end; \x05\x05\x05\x05\x05⑤ ; //所有位置都选出数,则退出for i:=m downto 1 do 循环\x05\x05\x05end; \x05\x05end; \x05end; end.附答案:① false ② used[data[i]]:=flase ③ j ④ n ⑤ break
本文来自投稿,不代表本站立场,如若转载,请注明出处。