noi导刊《冲刺noip2010 七》翻转游戏题解

合集下载

复赛noip2010提高组题解[新版]

复赛noip2010提高组题解[新版]

1.translate(20分)简单模拟。

开一个1000的队列,时刻保持队列长度不大于M,每次接受翻译请求时,先在队列中查找,查找失败则将单词加入队列。

查找使用Hash则为O(N),直接扫描O(MN),都在可接受范围内。

考试时只打了20分,原因至今不明,告诫大家对于水题不要多想,就像这道题最好不开hash,因为一个系统的可靠度是该系统所有子系统可靠度之积,程序越复杂越可能出错。

4.tortoise(50分)基础动规。

可以从题目背景中抽象出这样的问题:有一四维立方体(这里的立方体棱长不必相等,每一维对应一种卡片,每维的棱长对应该种卡片个数),每走一格(即使用一张卡片)的收益是当前位置坐标的函数。

求从(0,0,0,0)走到(a1,a2,a3,a4)最大收益。

故有方程f[x,y,z,t]=max{f[x-1,y,z,t], f[x,y-1,z,t], f[x,y,z-1,t], f[x,y,z,t-1]} + w[1 + x + y*2 + z*3 + t*4]目标状态: f[a1,a2,a3,a4]O(b^4)的代价,数据保证b<=40,完全满足要求5.prison(70分)问题可以重新描述为:寻找最小的冲突值c,使得存在一种方案,将原图分为两部分,并去掉这两部分之间的所有边后,余下的边权都不大于c。

对于这个问题我们可以二分查找c,并判定其可行性。

判定可行性的方法至今没想好。

考试的时候我是用并查集,将所有与u相连并与u之间边权大于c的点(设为点集Zu)必然不与u在同一集合中,枚举所有的u,每次将Zu合并成为一个集合,若存在某点u和Zu某个点处于同一个集合中,则c不可行,反之则可行。

但这种方法貌似存在bug,能拿70分。

如果把并查集合并查找的时间代价看作常数,则这种做法的时间代价为O(elogK),e是边数,K为最大的冲突值。

6.flow(100分)先用floodfill预处理出上方的每个格子能覆盖到下方的格子,构造一个布尔矩阵,行下标表示最上方的某个点,列下标表示最下方的某个点,矩阵对应点的值表示相应两个点的覆盖关系。

NOIP2010题解

NOIP2010题解
首先,第一题是四道题中最简单的,直接写代码,注意一些细节就可以了, 一百分也是一定要拿到手的,因为后面的分都不是很好拿。 然后是第二题,第二题就要用动态规划了,可以用最朴素的BFS来过那30% 的比较弱的数据,用最朴素的动态规划只能拿到50%左右的分,需要对动态规 划的状态进行优化,方可拿到一百分。 对于第三题,用搜索很快可拿30,代码复杂度也极低,看到规律的枚举 +BFS(floodfill)拿80分,会优化的二分(二分枚举)+BFS拿满分,只是代 码稍微麻烦些,或者有思路的用贪心+并查集也可拿满分,代码也要比二分 +BFS简单一点。 然后关于本题,数据的反复查找与读取很耗时,想不超时的一些同学需要考 虑图论中无向联通图的存储方式,邻接矩阵和完善的静态邻接表直接爆内存零 分,所以只能用动态邻接表或者双链表,笔者偷懒,用的不完善静态链表+直 接查找数据……所以,学学动态邻接表和双链表存储图看来迫在眉睫…… 最后是第四题,思路比较难,搜索的可以稳拿拿到30分,没有思路就搜索 吧。分析过后可以发现最后一题就是一个搜索+“线段覆盖”问题,对于搜索, 本体其实用DFS会比BFS快很多,对于“线段覆盖”,用动规解决就好了。
总分
400 380 340 330 320 310 300 300 290 280 280 270 270 260 260 260 260 250 250 250 240 240 240
姓名
徐明昭 张硕基 徐子尧 崔灏 田博 李光谱 吕诚 魏鑫鼎 马龙 李昭 吴文彬 李金培 李栋 李昂 杨帅 李怡君 杨东 王子晗 谢志聪 周梦溪 苏畅 许可 常泽昊
240 240 240 240 240 240 230 230 230 230 230 230 220 210 210 210 210 210 200 200

深入Noip2010初赛试题和全解

深入Noip2010初赛试题和全解

作者:钟野梓序今年Noip2010初赛刚结束,网上便铺天盖地地响起了“今年初赛好容易”“分数线一定很高,怎么办……”之类的声音。

确实,自2008年起,Noip初赛难度确有逐年下降的趋势,然而这并不是出题水平降低的缘故,相反,我认为这是中国计算机协会(下称CCF)对于N oip考核目的的审视和改变所导致的必然结果。

因此,我试图通过深入解析本届Noip初赛试囗题,来探寻这种变化下面深层的规律,从而令信息学竞赛选手能更好地备战往后数届的Noip初赛,让初赛不再成为一个问题。

由于条件所限,本文仅以Pascal语言的提高组试囗题作为对象进行分析,相对于普及组而言提高组试囗题一向具有较高的难度和较好的区分度,作为研究对象是个很好的选择;至于说语言的选择,仅是因为笔者个人选择原因。

一、概况本届题目在设置方面与往年相似,由选择题(普及组仅有单项选择题,提高组则有单项选择题与不定项选择题)、问题求解、阅读程序写结果及完善程序四大部分组成;但值得注意的是,今年提高组试囗题的分值设计与往年出现了较大的不同,除了选择题仍然是30分(15分单项+15分不定项),其余部分分值均发生了变化,其中问题求解由10分上升到15分,阅读程序由32分下降到28分,完善程序由28分下降到27分。

由于是第一年实行这种分值,目前暂时无法定言背后的含义,然而或许CCF在初赛更加重视选手的数学素质,而弱化了对于阅读程序能力的考察。

众所周知,阅读程序的能力并不能非常真实地反映选手的程序能力,并且纵观近几年的阅读程序题已没有了什么新意,这也可看做是一个“求新求变”的信号。

至于试囗题整体难度方面较上年有了明显下降,其中问题求解第一题可以看做是考察选手的语文水平,而阅读程序更是没有了以往的“死算”题(即给定若干常数,在程序中设置一系列运算过程,让选手进行阅读计算类型的题目),完善程序给定的源代码风格良好,第二题竟然还加上了注释,这不能不说就是一种降低难度的举动。

【题解】[Noip2010]机器翻译-C++

【题解】[Noip2010]机器翻译-C++

【题解】[Noip2010]机器翻译-C++题⽬Description⼩晨的电脑上安装了⼀个机器翻译软件,他经常⽤这个软件来翻译英语⽂章。

这个翻译软件的原理很简单,它只是从头到尾,依次将每个英⽂单词⽤对应的中⽂含义来替换。

对于每个英⽂单词,软件会先在内存中查找这个单词的中⽂含义,如果内存中有,软件就会⽤它进⾏翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中⽂含义然后翻译,并将这个单词和译义放⼊内存,以备后续的查找和翻译。

假设内存中有 M 个单元,每单元能存放⼀个单词和译义。

每当软件将⼀个新单词存⼊内存前,如果当前内存中已存⼊的单词数不超过 M?1,软件会将新单词存⼊⼀个未使⽤的内存单元;若内存中已存⼊ M 个单词,软件会清空最早进⼊内存的那个单词,腾出单元来,存放新单词。

假设⼀篇英语⽂章的长度为 N个单词。

给定这篇待译⽂章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。

Input输⼊⽂件共 2 ⾏。

每⾏中两个数之间⽤⼀个空格隔开。

第⼀⾏为两个正整数 M和 N,代表内存容量和⽂章的长度。

第⼆⾏为 N 个⾮负整数,按照⽂章的顺序,每个数(⼤⼩不超过 1000)代表⼀个英⽂单词。

⽂章中两个单词是同⼀个单词,当且仅当它们对应的⾮负整数相同。

0<M≤100,0<N≤1000Output包含⼀个整数,为软件需要查词典的次数。

Sample Input3 71 2 1 5 4 4 1Sample Output5//整个查字典过程如下:每⾏表⽰⼀个单词的翻译,冒号前为本次翻译后的内存状况:空:内存初始状态为空。

1. 1:查找单词1 并调⼊内存。

2. 1 2:查找单词 2 并调⼊内存。

3. 1 2:在内存中找到单词 1。

4. 1 2 5:查找单词 5 并调⼊内存。

5. 2 5 4:查找单词 4 并调⼊内存替代单词 1。

6. 2 5 4:在内存中找到单词 4。

7. 5 4 1:查找单词 1 并调⼊内存替代单词 2。

冲刺Noip2010模拟试题七

冲刺Noip2010模拟试题七

冲刺Noip2010模拟试题七1、数列(Sequence.pas/c/cpp)问题描述一个数列定义如下:f(1) = 1,f(2) = 1,f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7。

给定A,B和n的值,要求计算f(n)的值。

输入格式输入文件(sequence.in)仅一行包含3个整数A,B和n,其中(1≤ A, B ≤1000, 1 ≤n≤100,000,000)。

输出格式输出文件(sequence.out)仅一行,一个整数,即f(n)的值。

输入样列1 1 3输出样列2说明:若输入样例为1 2 10,则输出为5。

数据规模20%的数据,n≤1,00040%的数据,n≤100,000100%的数据,n≤100,000,0002、最长路(path.pas/c/cpp)问题描述设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当<i,j>为G中的一条边时有i < j。

设w(i,j)为边<i,j>的长度,请设计算法,计算图G中<1,n>间的最长路径。

输入格式输入文件path.in的第一行有两个整数n和m,表示有n个顶点和m条边,其中(2≤n≤1500,m≤50000),接下来m行中每行输入3个整数a ,b,v表示从a点到b点有条边,边的长度为v。

输出格式输出文件path.out,一个整数,即1到n之间的最长路径.如果1到n之间没连通,输出-1。

输入样例2 11 2 1输出样例1说明:若输入样例为2 0,则输出为-1。

数据规模20%的数据,n≤100,m≤100040%的数据,n≤1,000,m≤10000100%的数据,n≤1,500,m≤500003、木棍(wooden.cpp/pas/c)问题描述有n根木棍,每根的长度l和重量w已知。

这些木棍将被一台机器一根一根的加工。

机器需要一些启动时间来做准备工作,启动时间与木棍被加工的具体情况有关。

NOIP2010提高组初赛试题及详细解析

NOIP2010提高组初赛试题及详细解析

第十六届全国青少年信息学奥林匹克联赛初赛试题(提高组 C++语言两小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共10题,每题1.5分,共计15分。

每题有且仅有一个正确选项。

)1.与十六进制数 A1.2等值的十进制数是()A.101.2 B.111.4 C.161.125 D.177.252.一个字节(byte)由()个二进制组成。

A.8 B.16 C.32 D.以上都有可能3.以下逻辑表达式的值恒为真的是()。

A.P∨(┓P∧Q)∨(┓P∧┓Q) B.Q∨(┓P∧Q)∨(P∧┓Q)C.P∨Q∨(P∧┓Q)∨(┓P∧Q) D.P∨┓Q∨(P∧┓Q)∨(┓P∧┓Q)4.Linux下可执行文件的默认扩展名是( )。

A. exeB. comC. dllD. 以上都不是5.如果在某个进制下等式7*7=41成立,那么在该进制下等式12*12=()也成立。

A. 100B. 144C. 164D. 1966.提出“存储程序”的计算机工作原理的是()。

A. 克劳德•香农B. 戈登•摩尔C. 查尔斯•巴比奇D. 冯•诺依曼7.前缀表达式“+ 3 * 2 + 5 12 ”的值是()。

A. 23B. 25C. 37D. 6 58.主存储器的存取速度比中央处理器(CPU)的工作速度慢的多,从而使得后者的效率受到影响。

而根据局部性原理,CPU所访问的存储单元通常都趋于一个较小的连续区域中。

于是,为了提高系统整体的执行效率,在CPU中引入了( )。

A.寄存器 B.高速缓存 C.闪存 D.外存9.完全二叉树的顺序存储方案,是指将完全二叉树的结点从上到下、从左到右依次存放到一个顺序结构的数组中。

假定根结点存放在数组的1号位置上,则第k号结点的父结点如果存在的话,应当存放在数组中的()号位置。

A.2k B.2k+1 C.k/2下取整 D.(k+1)/210.以下竞赛活动中历史最悠久的是()。

冲刺NOIP2010 报数题解

报数【题目描述】CG同学又弄到一批新牛,新牛到了农场后,首先学习汉语,数的朗读成为新牛的难题。

朗读绝对值小于10亿的数。

新牛们知道汉语中有如下的朗读规则:1.首先读符号位,然后读整数部分。

整数部分之后可能出现小数点,如果有小数部分则小数点一定出现,并且读出小数点之后读小数部分。

2.符号位的读法是:(1)正数,不论正号“+”是否出现,都不必读出符号位;(2)负数最左边的符号是“-”读成“负”(以“F”来表示“负”)。

3.整数部分的读法是:(1)如果整数部分不存在或整数部分全为零则直接读成“零”(以“0”来表示“零”);(2)否则从整数部分中最左边的非零数字开始读起,然后以十,百,千,万,亿(分别以“S”,“B”,“Q”“W”,“Y”来表示)等数量单位来拼读整数部分。

4.整数部分中:(1)每一个非零数字都必须结合各个相应的数量单位读出来。

(2)每一段连续的“零”只能读成一个“零”,但是某一段连续的“零”的左侧或者右侧不存在非零数字(这里只考虑整数部分)则这一段“零”不应该读出来。

5.如果有小数部分,则首先读“点”(以“D”来表示“点”),然后从左至右有顺序的读出各个小数位。

在读小数部分的时候不可以使用十,百,千,万,亿等数量单位;但是小数部分的每一个数字都要读出来,连续的零不可以读成一个零,而应该分别读出。

6.如果数中有小数点而没有小数部分,则不应该把小数点读出来。

例如,—0020030004.567应该读成“F2Q03W04D567”,000.89应该读成“0D89”。

请你编写程序帮助新牛把给定的数正确地读出来。

【输入格式】输入文件仅一行,存放了一个数(不超过50个字符),其绝对值小于10亿。

【输出格式】输出文件仅一行,输出这个数的正确读法。

【样例输入】-0020030004.567【样例输出】F2Q03W04D567弄了好几个小时,两个版本,把精简的奉上,详见代码注释。

期间使用了一个单位数组flag,数字数组a,标志数组b。

冲刺NOIP2010模拟试题与解析(一)

冲刺NOIP2010模拟试题与解析(一)题目(提高组时间:3个小时)难易指数:★★★1、淘汰赛制(elimination.pas/c/cpp)【问题描述】淘汰赛制是一种极其残酷的比赛制度。

2n名选手分别标号1,2,3,…,2n-1,2n,他们将要参加n轮的激烈角逐。

每一轮中,将所有参加该轮的选手按标号从小到大排序后,第1位与第2位比赛,第3位与第4位比赛,第5位与第6位比赛……只有每场比赛的胜者才有机会参加下一轮的比赛(不会有平局)。

这样,每轮将淘汰一半的选手。

n轮过后,只剩下一名选手,该选手即为最终的冠军。

现在已知每位选手分别与其他选手比赛获胜的概率,请你预测一下谁夺冠的概率最大。

【输入文件】输入文件elimination.in。

第一行是一个整数n(l≤n≤l0),表示总轮数。

接下来2n行,每行2n个整数,第i行第j个是p ij(0≤p ij≤100,p ii=0,p ij+p ji=100),表示第i号选手与第j 号选手比赛获胜的概率。

【输出文件】输出文件elimination.out。

只有一个整数c,表示夺冠概率最大的选手编号(若有多位选手,输出编号最小者)。

【样例输入】20 90 50 5010 0 10 1050 90 0 5050 90 50 0【样例输出】1【数据规模】30%的数据满足n≤3;100%的数据满足n≤10。

2、种树(trees.pas/c/cpp)【问题描述】一条街的一边有几座房子。

因为环保原因居民想要在路边种些树。

路边的地区被分割成块,并被编号为l…n。

每个块的大小为一个单位尺寸并最多可种一棵树。

每个居民想在门前种些树并指定了三个号码b,e,t。

这三个数表示该居民想在b和e之间最少种t棵树。

当然,b≤e,居民必须保证在指定地区不能种多于地区被分割成块数的树,即要求t≤e-b+1,允许居民想种树的各自区域可以交叉。

出于资金短缺的原因,环保部门请你求出能够满足所有居民的要求,需要种树的最少数量。

NOIP复赛复习15反转问题与弹性碰撞


#include<cstdio> #include<cstring> #include<algorithm> using name space std; int dir[25],f[25]; int main(){ while(~scanf("%d",&dir[0])){ int tmp=0,ans=20; memset(f,0,sizeof(f)); for(int i=1;i<20;i++)scanf("%d",&dir[i]); f[0]=1;tmp++; for(int i=1;i<20;i++){
memset(tmp,0,sizeof(tmp)); for(int j=0;j<n;j++){ tmp[0][j]=i>>j&1; } int t=cal(); if(t<cnt){ cnt=t; memcpy(ans,tmp,sizeof(tmp)); } } if(cnt==n*m+1){ printf("IMPOSSIBLE\n"); } else{ for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ printf("%d%c",ans[i][j],j+1==n ? '\n':' '); } } }
POJ 3279 农夫约翰知道聪明的牛产奶多。于是为了提高牛的智商他准备了如下游戏。 有一个 M×N 的 格子,每个格子可以翻转正反面,它们一面是黑色,另一面是白色。黑色的格子翻转后就是 白色,白色的格子翻转过来则是黑色。游戏要做的就是把所有的格子都翻转成白色。不过因 为牛蹄很大,所以每次翻转一个格子时,与它上下左右相邻接的格子也会被翻转。因为翻格 子太麻烦了, 所以牛都想通过尽可能少的次数把所有格子都翻成白色。 现在给定了每个格子 的颜色,请求出用最小步数完成时每个格子翻转的次数。最小步数的解有多个时,输出字典 序最小的一组。解不存在的话,则输出 IMPOSSIBLE。

Noip2010提高组 第1题 translate 机器翻译

Noip2010提高组第1题translate 机器翻译【题意分析】现在要翻译一段文章,于是需要查词典。

而计算机拥有存储功能,可以减少一部分查询。

已知计算机内存可以存储m个单词,当要查询的单词在内存中时,可以不用去查词典。

当内存未满时,每查到一个新词,就会加入到内存中;当内存已满,查到的新词会加入到内存中,并把内存中的第一个单词顶出内存。

现要求出翻译一篇文章需要查询词典的次数。

【输入】3 7 第1行2个正整数m、n,表示内存长度及文章长度1 2 1 5 4 4 1 第2行n个非负整数,为文章的内容【输出】5 查询词典的次数【样例分析】整个查字典过程如下:每行表示一个单词的翻译,冒号前为本次翻译后的内存状况:空:内存初始状态为空。

1.1:查找单词1 并调入内存。

2.1 2:查找单词2 并调入内存。

3.1 2:在内存中找到单词1。

4. 1 2 5:查找单词5 并调入内存。

5. 2 5 4:查找单词4 并调入内存替代单词1。

6. 2 5 4:在内存中找到单词4。

7. 5 4 1:查找单词1 并调入内存替代单词2。

共计查了5次词典。

【分析】本题就是一个简单的模拟:用队列q表示内存,l、r为内存的头、尾指针;用布尔数组f[i]表示i单词是否在数组中。

【代码】Program translate;Constinfile = 'translate.in';outfile = 'translate.out';Varf: Array[1..1000] Of Boolean;s, i, l, c, m, n, r: longint;q: Array[1..1000] Of Longint;BeginAssign(input, infile);Reset(input);Assign(output, outfile);Rewrite(output);ReadLn(m, n);Fillchar(f, Sizeof(f), False);s := 0;l := 1;r := 0;For i:=1 To n Do BeginRead(c);If f[c] Then Continue;Inc(r);q[r] := c;Inc(s);f[c] := True;If r - l + 1 > m Then Beginf[q[l]] := False;Inc(l);End;End;WriteLn(s);Close(input);Close(output);End.【总结】实在没什么好说的,只要仔细就不会错。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

广度搜素
int bfs(){ if (sbegin==0 || sbegin==send) return 0;//如果给定的状态就已经实现了目标就输出0 for (unsigned int head=0; deq.size()<65536 && head<deq.size();){ //如果队列空或所有状态都出现了结束,没有答案 for (int i=0;i<16;i++){ // 先任选一个位置待翻转 unsigned int now=deq[head]; //取队头元素 for (int j=0;j<5;j++){ //分别对第i个位置及其上下左右的位置翻转 int xx=i/4+fa[j][0],yy=i%4+fa[j][1]; if (xx>=0 && xx<4 && yy>=0 && yy<4 ) now^=(dig[i+fa[j][2]]); } if (now==0 || now==send) return(deq1[head]+1); // 到目标 if (flag[now])continue; // 如果重复则舍弃,否则入队并设置标志 deq.push_back(now); deq1.push_back(deq1[head]+1); flag[now]=true; } head++; } return(-1); }
翻转游戏
题目描述

长方形上进行的,在长方形的16个格上每个格子都 放着一个双面的物件。每个物件的两个面,一面是白色,另一面是黑色,每个物 件要么白色朝上,要么黑色朝上,每一轮你只能翻3至5个物件,从而由黑到白的 改变这些物件上面的颜色,反之亦然。每一轮被选择翻转的物件遵循以下规则: 1、从16个物件中任选一个。 2、翻转所选择的物件的同时,所有与它相邻的左方物件、右方物件、上方物件 和下方物件(如果有的话),都要跟着翻转。 以下为例: bwbw wwww bbwb bwwb 这里"b"表示该格子放的物件黑色面朝上、"w"表示该格子放的物件白色朝上。 如果我们选择翻转第三行的第一个物件,那么格子状态将变为: bwbw bwww wwwb wwwb 游戏的目标是翻转到所有的物件白色朝上或黑色朝上。你的任务就是写一个程 序来求最少的翻转次数来实现这一目标。
输入输出样例
输入样例 bwwb bbwb bwwb bwww 输出样例 4

算法分析:




求最少步数,广度搜索+位运算 将长方形数字化(b为0,w为1); 输入样例 bwwb bbwb bwwb bwww 转化为unsigned int sbegin=(0110 0010 0110 0111)2 各位对应权值(由高位到低位)为 dig{32768,16384,8192,4096,2048,1024,512,256,128, 64,32,16,8,4,2,1) 对x的第i位(从高位到低位0~15)取反为 x^dig[i] ,即异或运算
主程序
#include <fstream> #include <string> #include <vector> using namespace std; ifstream fin("flip.in"); ofstream fou("flip.out"); int main(){ init(); ans=bfs(); if (ans>-1) fou<<ans<<endl; else fou<<"Impossible"<<endl; return 0; }
输入输出格式


输入格式 输入文件flip.in包含4行,每行4个字符,每个 字符"w" 或 "b"表示游戏开始时格子上物件的状 态。 输出格式 输出文件flip.out仅一个整数,即从给定状态 到实现这一任务的最少翻转次数。如果给定的状 态就已经实现了目标就输出0,如果不可能实现目 标就输出"Impossible"。
数据结构
unsigned int sbegin=0,send=0x0000ffff,dig[16]; //dig[i]为第i位的权值,dig[0]为最高位。 int fa[5][3]={{0,0,0},{0,-1,-1},{0,1,1},{-1,0,4},{1,0,4}};// 翻动方案 bool flag[66000]={0};//判重标志数组最大65535 vector <unsigned int> deq;//广搜队列 vector <int> deq1; //deq1[i]为deq[i]的深度,即步数 int ans=0;
初始化
void init(){ string str; for (int i=0;i<4;i++){ fin>>str; for (int j=0;j<4;j++) sbegin=(sbegin<<1)+(str[j]=='b'?0:1); } //将长方形数字化b为0,w为1; dig[15]=1; for (int i=14;i>=0;i--) dig[i]=dig[i+1]<<1;//求各位的权值 deq.push_back(sbegin);//队列初始化, deq1.push_back(0); flag[sbegin]=true; }
相关文档
最新文档