OK±¸Õ½NOIP2010Ìá¸ß×é³õÈü¸´Ï° ¡ª¡ªË㷨ƪ֮Ëã·¨Éè¼ÆµÄ³£ÓòßÂÔ
³ÌÐòÉè¼ÆÖ÷Òª°üÀ¨Á½¸ö·½Ãæ
? ½á¹¹ÌØÐÔµÄÉè¼Æ£¨Êý¾Ý½á¹¹µÄÉè¼Æ£©£» ? ÐÐÎªÌØÐÔµÄÉè¼Æ£¨Ëã·¨Éè¼Æ£©£» µÚһƪÖ÷Òª²ûÊöÁË½á¹¹ÌØÐÔµÄÉè¼Æ£¬¼´ÈçºÎΪ½âÌâÑ¡ÔñºÏÊʵÄÊý¾Ý½á¹¹¡£µ«ÕâÖ»ÊÇÎÊÌâµÄÒ»¸ö·½Ãæ¡£½ÓÏÂÀ´µÄÎÊÌâÊÇÈçºÎ½«½âÌâ¹ý³ÌµÄÿһ¸öϸ½Ú׼ȷµØ¼ÓÒÔ¶¨Ò壬²¢ÓÃijÖÖÓïÑÔÍêÕûµØÃèÊö³öÀ´¡£ÕâÒ»¹ý³Ì¼ÈËùνÐÐÎªÌØÐÔµÄÉè¼Æ£¬Òà³ÆËã·¨Éè¼Æ¡£µÚ¶þƪ½«Î§ÈÆÕâ¸öÖ÷ÌâÕ¹¿ªÌÖÂÛ¡£
Ëã·¨ÊÇÒ»×é(ÓÐÏÞ¸ö)¹æÔò£¬ËüΪij¸öÌØ¶¨ÎÊÌâÌṩÁ˽â¾öÎÊÌâµÄÔËËãÐòÁС£Í¨Ë×µã˵£¬¾ÍÊǼÆËã»ú½âÌâµÄ¹ý³Ì¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬ÎÞÂÛÊÇÐγɽâÌâ˼·»¹ÊDZàд³ÌÐò£¬¶¼ÊÇÔÚʵʩijÖÖËã·¨¡£Ç°ÕßÊÇÍÆÀíʵÏÖµÄËã·¨£¬ºóÕßÊDzÙ×÷ʵÏÖµÄËã·¨¡£¼ÆËã»ú½âÌâµÄºËÐÄÊÇËã·¨Éè¼Æ¡£Ò»¸öËã·¨Ó¦¸Ã¾ßÓÐÒÔÏÂÎå¸öÖØÒªÌØÕ÷:
(1)ÓÐÇîÐÔ Ò»¸öËã·¨±ØÐë±£Ö¤Ö´ÐÐÓÐÏÞ²½Ö®ºó½áÊø£» (2)È·ÇÐÐÔ Ëã·¨µÄÿһ²½Öè±ØÐëÈ·Çж¨Ò壻
(3)ÊäÈë Ò»¸öËã·¨ÓÐ0¸ö»ò¶à¸öÊäÈ룬ÒÔ¿Ì»®ÔËËã¶ÔÏóµÄ³õʼÇé¿ö¡£Ëùν0¸öÊä
ÈëÊÇ Ö¸Ëã·¨±¾Éí¶¨³öÁ˳õʼÌõ¼þ£»
(4)Êä³ö Ò»¸öËã·¨ÓÐÒ»¸ö»ò¶à¸öÊä³ö£¬ÒÔ·´Ó³¶ÔÊäÈëÊý¾Ý¼Ó¹¤ºóµÄ½á¹û¡£Ã»ÓÐÊä³ö
µÄËã·¨ÊǺÁÎÞÒâÒåµÄ£»
(5)ÄÜÐÐÐÔ Ëã·¨ÔÔòÉÏÄܹ»¾«È·µØ½øÐУ¬¶øÇÒÈËÃÇÓñʺÍÖ½×öÓÐÇî´Î¼´¿ÉÍê³É£»
ÏÂÃæ£¬ÎÒÃǶԹ¹³ÉËã·¨ËùÒÀ¾ÝµÄһЩ»ù±¾·½·¨ºÍ˼·չ¿ª·ÖÎö¡£¶ÔÓÚ¶ÁÕßÀ´Ëµ£¬ÎªÁË»ñµÃÒ»¸ö¼´ÓÐЧÓÖÓÅÃÀµÄËã·¨£¬±ØÐëÁ˽âһЩ»ù±¾µÄ³£ÓõÄËã·¨Éè¼ÆË¼Â·¡£
ÏÖʵÊÀ½çµÄÊÂÎï¶à×˶à²Ê£¬Ç§±äÍò»¯¡£ÎÒÃDz»¿ÉÄܹ涨һЩ¼òµ¥µÄÌõÌõ¿ò¿òºÍÌ×ÓÃÏֳɵÄģʽȥ½â¾öËùÓеÄÎÊÌ⡣Ȼ¶ø£¬ÏÖʵÊÀ½çÒ²ÓдóÁ¿ÊÂÎï´æÔÚ×ÅÐí¶àÏàËÆ»òÏà½üµÄ¹æÂÉ£¬´æÔÚ±¾ÖÊÏàͬµÄ¶«Î÷¡£ÕýÒòΪÈç´Ë£¬¾ÍÓпÉÄÜÐγÉһЩ³£Óõķ½·¨Ë¼Â·£¨²ßÂÔ£©£¬°´ÕÕÕâЩ·½·¨Ë¼Â··ÖÎöºÍÇó½âÊÔÌ⣬һ°ã¿Éʹ½âÌâ¹ý³Ì±äµÃÈÝÒ×һЩ¡£ ±¾Õ½«½éÉܼ¸ÖÖµäÐ͵ÄËã·¨²ßÂÔ£¬ÕâЩ²ßÂÔ³£ÓÃÓÚÄÇЩÐèÒª¶ÀÁ¢Ë¼¿¼¡¢¼û½â¶À´´ºÍÓÐËù´´ÐµķDZê×¼Ìâ¡£µ±È»Ãæ¶Ôʵ¼ÊÊÔÌ⣬¾¿¾¹Ê¹ÓÃÄÄÖÖ·½·¨£¬ÔõÑùÓã¬ÐèÒª¡°¾ßÌåÎÊÌâ¾ßÌå·ÖÎö¡±£¬ÐèÒª»úÖÇÁé»î£¬²»ÒËËÀ¼Ç³É¹æ¡¢Éú°áÓ²Ì×£¬µÃ¿¿×Ô¼ºÏë·½Éè·¨¡£Ëùν¡°Õó¶øºóÕ½£¬±ø·¨Ö®³££¬ÔËÓÃÖ®Ã´æºõÒ»ÐÄ¡±ÊÇÒ²¡£
¡ì5£®1¶ÔÓ¦µÄ²ßÂÔ
½«ÎÊÌâA¶ÔÓ¦ÁíÒ»¸ö±ãÓÚ˼¿¼»òÓÐÇó½â·½·¨µÄÎÊÌâB£¬»¯·±Îª¼ò£¬±äδ֪ΪÒÑÖª¡£
Ò» Ò»¶ÔÓ¦¼¼ÊõÊÇÒ»ÖÖÖØÒªµÄ²ßÂÔ¡£ËüµÄ˼άºËÐÄÊÇÇóͬ£¬Í¨¹ý¾ÙÒ»·´Èý¡¢´¥ÀàÅÔͨµØ¶ÔÒѾ½â¾öµÄÀàËÆÎÊÌâºÍÓйØÊÂʵ×÷ÁªÏ룬ÍâÍÆ³öÊÂÎï¼äµÄÁªÏµ£¬´Ó¶øÈ«Ãæ¡¢ÉîÈëµØÈÏʶºÍ·ÖÎöÊÂÎï¡£¡°ÊÀ½çÉÏûÓÐÍêÈ«²»Í¬µÄ¶«Î÷¡±£¬ÏàËÆµãµÄÆÕ±é´æÔÚΪÎÒÃÇʹÓöÔÓ¦²ßÂÔ½âÌâÌṩÁË»ù´¡¡£µ«ÊǶÔÓ¦²¢²»µÈÓڵȼۣ¬Ëü²»½öÒª·ÖÎöÎÊÌâ¼äµÄ¹²Í¬µã£¬»¹Òª·ÖÎöÎÊÌâ¼äµÄ²»Í¬µã£¬ÊÇ
Ò»ÖÖÒìÖÐÇóͬµÄ˼ά·½·¨¡£ Ò»¡¢¶ÔÓ¦¾«µäÎÊÌâ
¡°¿Í¹ÛÊÀ½çÎïÖʵÚÒ»ÐÔ£¬Ë¼Î¬µÚ¶þÐÔ¡±¡£¾µäÎÊÌâ¼°ÆäËã·¨µÄ֪ʶ»ýÀÛÊǽâÌâµÄ»ù´¡¡£¾ºÈüµÄÐí¶àÊÔÌâ×îÖÕ¶¼¿ÉÒÔת»¯Îª¾µäÎÊÌ⣬Òò´Ë±ØÐ뾡¿ÉÄÜ¶àµØÕÆÎÕ¾µäÎÊÌâ¼°ÆäËã·¨µÄ֪ʶ¡£½âÌâʱ£¬ÐÄÖо³£Òª»ØÒäÒѾ½â¾öµÄ¾µäÎÊÌâºÍÓйؽⷨ£¬ÍùÍù»áÊÕµ½ÒâÏë²»µ½µÄЧ¹û¡£µ±È»ÕâЩÊÔÌâ²¢²»Ö±½ÓÒÔ¾µäÎÊÌâµÄÔò³öÏÖ¡£ÎÒÃDZØÐëºÏÀíÔËÓÃÇóͬ˼ά¡¢ÇóÒì˼ά±È½ÏÁ½Õß¼äµÄÏàͬµãºÍ²»Í¬µã£¬Í¨¹ýÊʵ±µÄ·½·¨½«ÊÔÌâת»¯Îª¾µäÎÊÌâ¡£ ¡¾ÀýÌâØ¥¡¿»»³µÎÊÌâ
Ò»¸ö³ÇÊÐÓÐn¸ö³µÕ¾£¬ÒÑÖªmÌõÁ¬½ÓÕâЩ³µÕ¾µÄ¹«¹²Æû³µµ¥Ïò·Ïß¡£ÇóÕ¾1ÖÁÕ¾nµÄ×îÉÙ»»³µÊý¡£ ÊäÈ룺
n m
ÒÔÏÂmÐÐÒÀ´ÎÁгöÿÌõÏß·µÄ³µÕ¾ÐòºÅ¡£ Êä³ö£º
×îÉÙ»»³µ´ÎÊý¡£
Ëã·¨·ÖÎö
Õâ¸öÎÊÌâ¶ÔÎÒÃÇÀ´½²²¢·ÇİÉú¡£Èç¹û½«ÎÊÌâÒªÇó¸ÄΪ¡°ÇóÕ¾1µ½Õ¾n×îÉÙ¾¹ý¶àÉÙÕ¾¡±£¬¾Í±äΪÎÒÃÇÏ൱ÊìϤµÄ×î¶Ì·¾¶µÄµäÐÍÓ¦Ó᣼´
ÁîÓÐÏòͼG=
µ«ÏÖÔÚµÄÎÊÌâÊÇÇó×îÉÙ»»³µ´ÎÊý£¬ËäÈ»ËüÓëÇó¾¹ý×îÉÙÕ¾ÊýµÄ×ÜÊÇÓй²Í¬±³¾°£¬µ«ÒªÇó²»Í¬¡£ÎÒÃÇ»¯ÒìΪͬ£¬ÖØÐ¶ÔÔͼG×÷ÁËÐÞÕý£º
ÈôVi£¬Vj¡ÊVÇÒ£¨Vi£¬Vj£©¡ÊEµ±ÇÒ½öµ±Õ¾iÓëÕ¾jÒÀ´ÎÔÚͬһÌõ¹«¹²Æû³µÏß·ÉÏ(Vi¿ÉÖ±´ïVj)£¬WijÈÔΪ1¡£È»ºóÔËÓÃÇó×î¶Ì·¾¶·½·¨¼ÆËãV1ÖÁVnµÄ×î¶Ì·¾¶³¤¶È£¬Æä³¤¶È-1¼´Îª×îÉÙ»»³µ´ÎÊý¡£Éè
t¡ªµ±Ç°Ïß·µÄ³µÕ¾Êý£»
oneline¡ªµ±Ç°Ïß·µÄ³µÕ¾ÐòÁУ» g¡ªÓÐÏòͼµÄÏàÁÚ¾ØÕó£»
ÎÒÃǰ´ÕÕÏÂÊöËã·¨¼ÆËã×îÉÙ»»³µ´ÎÊý£º
fillchar (g£¬ sizeof (g)£¬0)£» {ÓÐÏòͼ³õʼ»¯}
for i£º=1 to m do {¶ÁÈëÿÌõÏß·µÄÐÅÏ¢£¬¹¹Ôìgͼ}
begin
t¡û0£» fillchar(oneline£¬sizeof(oneline)£¬0)£» {µÚiÌõÏß·³õʼ»¯}
while not eoln do begin
t¡ût+1£»¶ÁµÚiÌõÏß·µÄµÚt¸ö³µÕ¾ÐòºÅoneline[t]£»
for j£º=1 to t-1 do g[oneline[j]£¬oneline[t]]¡û1£» end£»{while} end£»{for}
ÇógͼÖÐV1ÖÁVnµÄ×î¶Ì·¾¶³¤¶Èdist[n]£» Êä³öÕ¾1ÖÁÕ¾nµÄ×îÉÙ»»³µ´ÎÊýdist[n]-1£»
ÓÉÉϿɼû£¬¶ÔÓ¦²ßÂÔʹÓõÃÈçºÎ£¬¼´ÓëÆäÕÆÎÕ¾µäËã·¨µÄ¶àÉÙºÍÀí½âµÄ͸³¹³Ì¶ÈÓйأ¬Ò²ÓëÆäÓ¦ÓþµäËã·¨ÓÚʵ¼ÊµÄʵ¼ùÄÜÁ¦Óйأ¬¸üÓëÆäÍØÑÓ¾µäËã·¨Ó¦Ó÷¶Î§µÄ´´ÔìÁ¦Ï¢Ï¢Ïà¹Ø¡£ÏÂÀýµÄ½âÌâ¹ý³Ì½«¸üÇå³þµØËµÃ÷ÕâÒ»µã¡£ ¡¾ÀýÌâØ¥Ò»¡¿Ñ°ÕÒÊýÁÐ
ѰÕÒÒ»¸öÓÉÕûÊý×é³ÉµÄÊýÁУ¬ÆäÖÐÈÎÒâÁ¬Ðøp¸öÕûÊýÖ®ºÍΪÕý£¬ÈÎÒâÁ¬Ðøq¸öÕûÊýÖ®ºÍΪ¸º¡£Èô²»´æÔÚÕâÑùµÄÕûÊýÊýÁУ¬ÔòÊä³öNO£»·ñÔòÊä³öÆäÖÐÒ»¸öÊýÁС£
Ëã·¨·ÖÎö
±¾ÌâËã·¨Éè¼ÆµÄ¹Ø¼üÔÚÓÚÁ¬ÐøÖ®ºÍµÄ±íʾ¡£Èç¹ûÎÒÃǾÍÊÂÂÛÊ£¬Ö±½Ó½«µÚi+1¸öÕûÊýai+1¿ªÊ¼µÄk¸öÕûÊýÖ®ºÍÃèÊö³É¶àÏîʽai+1+ai+2+?+ai+kµÄ»°£¬Ëã·¨¾ÍºÜÄѽ¨Á¢ÁË¡£Îª´Ë£¬ÎÒÃÇÔÝÇÒÆ²È¥Ã¿Ò»ÏîÊý¾¿¾¹ÎªºÎÖµµÄ¾ßÌåϸ½Ú£¬¶ø½«×¢ÒâÁ¦¼¯ÖÐÖÁÁ¬ÐøÐÔÕâÒ»ÌØµãÉÏ¡£Éè si¡ªÊýÁÐǰi¸öÕûÊýÖ®ºÍ£¬¼´si=a1+a2+?+ai¡£ÆäÖÐs0=0 (0¡Üi¡Ün)¡£ÏÔÈ»¸ù¾ÝÌâÒâ si ÓÉÉÏÊöÁ½×é²»µÈʽÒý³öÓÐÏòͼg£¬Í¼Öй²ÓÐn+1¸ö¶¥µã£¬·Ö±ðΪs0?sn¡£Èôsi>sj(0¡Üi£¬j¡Ün)£¬Ôò´ÓsiÍùsjÒý³öÒ»ÌõÓÐÏò±ß¡£Èçͼ£¨n=6£¬p=5£¬q=3£© ¹¹ÔìÓÐÏòͼgµÄ¹ý³ÌÈçÏ£º fillchar(g£¬sizeof(g)£¬0)£» {ÓÐÏòͼgµÄÏàÁÚ¾ØÕó³õʼ»¯} fillchar(d£¬sizeof(d)£¬0)£» {¸÷¶¥µãµÄÈë¶ÈÐòÁгõʼ»¯} for i£º=0 to n do {¸ù¾ÝÁ½×é²»µÈʽ¹¹ÔìÓÐÏòͼg} begin if i+p¡Ün then begin g[i+p£¬i]¡û1£»d[i]¡ûd[i]+1£»end£»{then} if i+q¡Ün then begin g[i£¬i+q]¡û1£»d[i+q]¡ûd[i+q]+1£»end£»{then} end£»{for} ÏÔÈ»°´ÕÕÉÏÊö¶¨Ò壬Èç¹ûͼg¿ÉÒÔÍØÆËÅÅÐò£¬Æä¶¥µãµÄÍØÆËÐòÁпÉÒÔ¶ÔÓ¦Âú×ãÌõ¼þµÄÕûÊýÊýÁУ»·´Ö®£¬²»´æÔÚÕâÑùµÄÕûÊýÊýÁУº ¶Ôͼg½øÐÐÍØÆËÅÅÐò£» if ͼgÓлØÂ· then ÎÞ½âÍ˳ö else Éú³ÉÍØÆËÐòÁÐorder[0]?order[n]£» Èç¹ûͼg¿ÉÒÔÍØÆËÅÅÐò£¬Ôò°´ÕÕÏÂÊö·½·¨½«ÍØÆËorderת»»³ÉsÊý×飺 ÍØÆËÐòÁÐÖж¥µã¶ÔÓ¦µÄsÖµÊǵݼõµÄ£¬ÆäÖÐs0=0¡£Èç¹ûorder[i]=0£¬ÔòÒÀ´ÎÉ趨 sorder[0]=i£¬ sorder[1]=i-1£¬??£¬ sorder[i-1]=1£¬sorder[i]=0£¬ sorder[i+1]=-1£¬??£¬ sorder[n]=i-n ÀýÈ磬¶ÔÓÚ(ͼ5£®1¡ª2)ÖеÄÓÐÏòͼg£¬¿ÉÒÔ¼ÆËã³öÍØÆËÐòÁÐ i£º 0 1 2 3 4 5 6 i order[i] sorder[i] 0 2 2 1 5 1 2 0 0 3 3 -1 4 6 -2 5 1 -3 6 4 -4 ¼´s0=0£¬ s1=-3£¬ s2=2£¬ s3=-1£¬ s4=-4£¬ s5=1£¬ s6=-2 ¸ù¾ÝsµÄ¶¨Ò壬¿ÉµÃ³ö ai=(a0+a1+?+ai-1+ai) - (a0+a1+?£«ai-1)=si-si-1 ¼´ a1=s1-s0=-3 a2=s2-s1=5 a3=s3-s2=-3 a4=s4-s3=-3 a5=s5-s4=5 a6=s6-s5=-3 ÏÔÈ»£¬ÔÚÕâ¸öÕûÊýÊýÁÐÖУ¬ÈÎÒâÁ¬Ðø£µ¸öÕûÊýÖ®ºÍΪÕý£¬ÈÎÒâÁ¬Ðø£³¸öÕûÊýÖ®ºÍΪ¸º¡£ ÓÉÍØÆËÐòÁй¹ÔìÕûÊýÊýÁеķ½·¨ÈçÏ£º fillchar(s£¬sizeof(s)£¬0)£» for i£º=0 to n do if order[i]<>0 then for j£º= i downto 0 do s[order[j]]¡ûs[order[j]]+1 else break£» for j£º=i+1 to n do s[order[j]]¡ûi-j£» for i£º=1 to n do a[i]¡ûs[i]-s[i-1]£» ´ÓÐÎʽÉÏ¿´£¬ÕâµÀÊýÁмÆËãÌâËÆºõÓëͼÂÛ·çÂíÅ£²»Ïà¸É£¬ÌâÖм´Î´³öÏÖͼÂÛÖг£¼ûµÄ¡°³µÕ¾¡±£¬¡°³ÇÊС±µÈ¶¥µã£¬Ò²Î´³öÏÖ¡°¹«Â·¡±£¬¡°Ìú·¡±µÈ±ß£¬¸üδ³öÏÖ¡°³¤¶È¡±£¬¡°´«Êäʱ¼ä¡±µÈµ½È¨£¬µ«Ëã·¨Éè¼ÆÕßÈ´Ã÷°×¡°Ëüɽ֮ʯ¿ÉÒÔ¹¥Óñ¡±µÄµÀÀí£¬Ê¹ÓÃͼÂÛÖеľµäËã·¨¡ªÍØÆËÅÅÐòƯƯÁÁÁÁµØ½â¾öÁ˸ÃÌâ¡£Ëû¶À±Ùõè¾¶£¬°Ñsi×÷Ϊ¶¥µã£¬sµÄ´óС¹ØÏµ×÷Ϊ±ß£¬²¢°´ÕÕÆäµÝ¼õ˳ÐòÉ趨±ßµÄȨֵ£¬Æä¹¹Ë¼µÄÇÉÃîÁîÈË̾·þ¡£ÕýÊÇÕâÖÖ´´ÔìÁ¦ÔÚ½âÌâ¹ý³ÌÖÐÆðÁ˹ؼüÐÔµÄ×÷Óᣠ¶þ¡¢¶ÔÓ¦¼òµ¥ÎÊÌâ ÓÐЩÊÔÌâµÄÇó½â·½·¨Ô±¾ºÜ¼òµ¥£¬µ«ÓÉÓÚÆä±íÏÖÐÎʽİÉú£¬Òò´ËÕ¿´¸Ðµ½¼¬ÊÖ¡£µ«Ö»ÒªÄã¹û¶ÏµØ×¥×¡Ö÷Ҫì¶Ü£¬ÉáÆúÓëÄ¿±êÎ޹صĴÎÒªÐÅÏ¢£¬È¥´Ö´æ¾«£¬È¥Î±´æÕ棬Óɴ˼°±Ë£¬ÓÉ±í¼°À±ã¿ÉÒÔ·µÆÓ¹éÕæ£¬½«ÊÔÌâÓëÒ»¸ö¼òµ¥µÄÎÊÌâ¶ÔÓ¦ÆðÀ´¡£ ¡¾ÀýÌâØ¥¶þ¡¿É¾ÊýÎÊÌâ ¼üÅÌÊäÈëÒ»¸ö¸ß¾«¶ÈµÄÕýÕûÊý£¬È¥µôÆäÖÐÈÎÒâs¸öÊý×ÖºóʣϵÄÊý×Ö°´Ô×óÓÒ´ÎÐò½«×é³ÉÒ»¸öеÄÕýÕûÊý¡£±à³Ì¶Ô¸ø¶¨µÄnºÍs£¬Ñ°ÕÒÒ»ÖÖ·½°¸£¬Ê¹µÃʣϵÄÊý×Ö×é³ÉµÄÐÂÊý×îС¡£ ÊäÈ룺 n s