/ Vijos / 讨论 / 问答 /

[置顶] <中秋节模拟赛之冷月葬花魂> 通知&答疑 专用贴

各位Oiers, ACMers...
各位男孩子们, 女孩子们...
各位 小岛 的粉丝们...

<<<实时更新>>>
+--------------------------------------------------------------------------------------+
* 18:32 : 现在比赛已经开始了, 希望大家玩得愉快.
* 18:47 : 已经陆陆续续有人开始提交代码了, PS: 我发现了参赛的选手中有来屠场的大神.
* 19:09 : 比赛所有题目的**内存限制都是512MB**.
* 19:37 : 所有题目以其**最后一次提交为准**,即使编译错误
* 20:04 : 详细帮助请参阅https://vijos.org/wiki/help#contest
* 20:27 : 为了更好的"游戏体验", 评测机修改为如下配置: cpu i7-3770,虚拟机内存1GB
* 20:40 : 比赛已经进入了倒计时, 还有大约50 mins全场比赛就将结束, 目前有的用户已经完成了所有题目的提交.
* 21:24 : 中秋节模拟赛之冷月葬花魂 已经接近尾声了.
* 21:30 : 本场比赛全部结束, 感谢大家的参与. 让我们静等最后的评测结果.
* 21:30 : 最后献上一曲 One Night http://music.baidu.com/song/2003626116#6717627e0c1ac88a4abc5153742bac96, 希望大家能爱上这样的夜晚. 我们下次再会.
* 22:15 : 评测已完毕
* 23:29 : 我们公开了部分数据, 以方便大家调试使用 : http://pan.baidu.com/s/1gdFxC35.
+--------------------------------------------------------------------------------------+

中秋节模拟赛之冷月葬花魂 将于2014年9月6日晚 6:30 ~ 9:30 与您相约vijos.org.

此处为比赛 通知 & 答疑 专用贴. 为了维护比赛的秩序, 比赛期间, 只有本帖中提出的疑问才会被 "懒惰的管理员与负责人" 打理...

同时也会随时在 顶楼(也就是我现在所在的这一层) 中给出相应的公告...

已经可以公开的消息:

  • 首先, 我不是管理员... 我以前(6年前)也只是vijos上一个刷题的小朋友=_=, 现在不怎么刷题了(变笨了).
  • 本次比赛的难度不大, 如果各位想了解大致的难度, 可以事先参见 P1874 与 P1875
  • 本次比赛的题目不是原创题, 因为vijos已经很久没有办过比赛了, 所以本次比赛一来是唤醒各位的手感, 二来也是测试一下vijos的比赛系统.
  • 在NOIP 2014到来之前, 我们还会再提供更多的比赛, 之后的比赛题目会更多集中为原创题.
  • 本次比赛的题目质量还算可以, 所有题目都是某个家伙(=_=不是我别看着我呀...=_=)从早年的一些参加过的比赛中找出来的, 当然各位是不可能在vijos上找到它们的. 凭心而论, 难度可以被定义为noip提高组或更简单.
  • 比赛中, 希望c++ 选手 慎用 cin cout.

望各位 玩得愉快.

AHdoc.

26 条评论

  • @ 2014-10-05 15:53:49

    我第一次登陆该网站,打算学着使用,发现“递交评测”那里是红字,网页显示有错误,这是怎么回事?

    • @ 2014-10-05 17:04:14

      红字是为了醒目

      你用的什么浏览器0 0

  • @ 2014-09-11 21:58:40

    求trie资料,我用了之后爆0QAQ

  • @ 2014-09-11 21:53:39

    求大家加q1781231766,我想和大家交流一下

  • @ 2014-09-10 22:28:43

    第一题字符串处理超时怎么办

    • @ 2014-09-11 07:33:45

      你应该是排序超时了

    • @ 2014-09-11 11:46:09

      排序,我没有排序啊,但是有一段是n2,就是输入一个名字,寻找它的过程。
      难道是快排+2分???????

    • @ 2014-09-11 12:26:22

      你都n^2了还不TLE……
      这不一看就是个 Trie 么…………………………

    • @ 2014-09-11 12:34:12

      好吧,会不会超空间呢

    • @ 2014-09-11 12:43:53

      ………………怎么会超空间………………
      N*MAXL 在 MAXL=20 时怎么可能 MLE ………………

  • @ 2014-09-10 18:05:43

    while he<=ti do begin for i:=1 to a[he].p do if a[a[he].g[i]].l then begin a[a[he].g[i]].l:=false;inc(ti);b[ti]:=a[he].g[i]; a[a[he].g[i]].t:=a[he].t+1;end; inc(he); end; 这一段哪儿错了 ps。初始化已做好,a。t意思是答案,a。g是和他一起比赛的人。a。l是访问标识he队首ti队尾

  • @ 2014-09-08 13:44:43

    第一题建立50000*50000的二维数组不就爆了吗,怎么连边

    • @ 2014-09-08 14:43:35

      邻接表。。=。=前向星也可以。。

    • @ 2014-09-08 14:51:30

      邻接表开多少呢

    • @ 2014-09-08 15:47:39

      差不多就行了

    • @ 2014-09-08 16:09:21
      type
       he=record
        s:string;p:longint;t:longint;
        g:array[1..5000]of longint;
       end;
      var
        a:array[1..50000]of he;
        s,s1:string;
        c,d,e,f,i,j,n:longint;
      function min(a,b:longint):longint;
      begin
       if a>b then exit(b);exit(a);
      end;
      function ye(x:longint):boolean;
      begin
       for i:=1 to a[x].p do if a[x].g[i]=1 then exit(false);exit(true);
      end;
      function xe(x,y:longint):boolean;
      begin
       for i:=1 to a[x].p do if a[x].g[i]=y then exit(false);exit(true);
      end;
      function bfs(x:longint):longint;
      begin
       //if ye(x) then exit(10000000);
       if x=1 then exit(0);
       for i:=1 to a[x].p do a[x].t:=min(a[x].t,a[a[x].g[i]].t+1);
       exit(a[x].t);
      end;
      procedure qsort(l,r:longint);
      var
       i,j,x:longint;mid,y:string;
      begin
       i:=l;j:=r;mid:=a[(l+r)shr 1].s;
       repeat
        while a[i].s<mid do inc(i);
        while a[j].s>mid do dec(j);
        if i<=j then begin x:=a[i].t;a[i].t:=a[j].t;a[j].t:=x;
         y:=a[i].s;a[i].s:=a[j].s;a[j].s:=y;inc(i);dec(j);end;
       until i>j;
       if i<r then qsort(i,r);
       if l<j then qsort(l,j);
      end;
      begin
       assign(input,'a.txt');reset(input);assign(output,'a1.txt');rewrite(output);
       readln(n);for i:=1 to 50000 do a[i].t:=10000000;a[1].t:=0;
       for j:=1 to n do begin
        d:=0;e:=0;f:=0;
        readln(s);s1:=copy(s,1,pos(' ',s)-1);
        for i:=1 to c do if a[i].s=s1 then begin d:=i;break;end;
        if d=0 then begin inc(c);a[c].s:=s1;d:=c;end;
        delete(s,1,pos(' ',s));
        s1:=copy(s,1,pos(' ',s)-1);
        for i:=1 to c do if a[i].s=s1 then begin e:=i;break;end;
        if e=0 then begin inc(c);a[c].s:=s1;e:=c;end;
        delete(s,1,pos(' ',s));
        s1:=s; for i:=1 to c do if a[i].s=s1 then begin f:=i;break;end;
        if f=0 then begin inc(c);a[c].s:=s1;f:=c;end;
        if xe(f,d) then begin inc(a[f].p);a[f].g[a[f].p]:=d;end;
        if xe(f,e) then begin inc(a[f].p);a[f].g[a[f].p]:=e;end;
        if xe(d,f) then begin inc(a[d].p);a[d].g[a[d].p]:=f;end;
        if xe(d,e) then begin inc(a[d].p);a[d].g[a[d].p]:=e;end;
        if xe(e,f) then begin inc(a[e].p);a[e].g[a[e].p]:=f;end;
        if xe(e,d) then begin inc(a[e].p);a[e].g[a[e].p]:=d;end;
       end;
       qsort(1,c);
       for i:=1 to c do a[i].t:=bfs(i);
       for i:=1 to c do if a[i].t=10000000 then writeln(a[i].s,' undefined',a[i].g[1])
        else writeln(a[i].s,' ',a[i].t);
        for i:=1 to c do begin for j:=1 to a[i].p do write(a[i].g[j],' ');writeln;end;
      end.
      end.
      

      这是我写的n个程序之一,这样行不行呢
      ps。只看记录类型定义

    • @ 2014-09-08 23:26:34

      不太清楚你的程序,我的用50000*1000..spfa(最后两个点re了。。)(我的打了将近400行。两层hash+最短路。结果hash函数问题没ac(数据完全就是瞄准了我hash的弊端出的啊)。。你们字符串是怎么处理的?)。。话说你的头像是怎么换过来的(用户设置里找了半天没看见改的地方。=。=)

    • @ 2014-09-09 08:25:43

      有个gravater,但是我的电脑打不开,于是哪儿填了别人的邮箱

    • @ 2014-09-09 09:13:55

      为何要写spfa这样的东西? 你不认为只要直接bfs就可以了么?

    • @ 2014-09-09 10:44:49

      我试图用树一样的东西,建立fa数组,但是可能不满足最优(类似贪心);
      bfs怎么做呢
      ps。样例不科学,我第一遍做,过了样例,结果爆0 QAQ

    • @ 2014-09-09 13:38:55

      用bfs求最短路径你不会?

      所有边都是单位边, 你用bfs当然是线性的. 何必要用spfa?

    • @ 2014-09-09 14:21:14

      好吧,有问题我在回复

    • @ 2014-09-09 20:28:28

      说的有道理=。=.......我只是看着朋友用spfa一遍就ac了很郁闷而已orz.........呜哇想不出hash函数来啊TT.........

    • @ 2014-09-09 21:38:58

      那bfs不是要开一个map数组吗,map数组开多么大

    • @ 2014-09-09 21:49:16

      bfs的话=。=我觉得用邻接表也可以啊。。所以还是我上面那个范围应该可以了吧。。我觉得=。=

    • @ 2014-09-09 21:53:25

      等等。。spfa用单源的话。。那么不就是bfs嘛?!。。就是说啊,单源spfa就是从bfs中演变过来的啊(而且我用来拓展节点的队列以及程序模板和bfs一摸一样=。=)。。╮(╯▽╰)╭脑子又卡了不好意思=。=

    • @ 2014-09-09 22:17:01

      bfs怎么弄一层一层的,我是优先广度,其次深度,dfs的写法不行

    • @ 2014-09-09 22:42:59

      跟spfa一样。。每次用邻接表找出当前节点连接的节点进行松弛。。然后加入队列中并且将队列的头指针不断向前知道头指针>尾指针。。。(其实就是bfs了吧。。我个人认为)

    • @ 2014-09-10 02:08:00

      敢问liyinghaowei, 广度优先搜索 与 BFS 有什么区别?

    • @ 2014-09-10 12:11:42

      我是用dfs的写法,写了bfs。我知道错误了,以前都用dfs没想到写法不同

    • @ 2014-09-10 12:19:53

      这套题是不是就考了宽搜

    • @ 2014-09-10 12:29:54

      本人太弱了,刚刚学会bfs

    • @ 2014-09-10 18:05:28

      while he<=ti do
      begin
      for i:=1 to a[he].p do if a[a[he].g[i]].l then begin
      a[a[he].g[i]].l:=false;inc(ti);b[ti]:=a[he].g[i];
      a[a[he].g[i]].t:=a[he].t+1;end;
      inc(he);
      end; 这一段哪儿错了
      ps。初始化已做好,a。t意思是答案,a。g是和他一起比赛的人。a。l是访问标识he队首ti队尾

    • @ 2014-09-10 21:45:06

      d[q2[k]]:=0;q[1]:=q2[k];shou:=0;wei:=1;pan[k]:=true;
      while shou<wei do
      begin
      inc(shou);t:=q[shou];
      for k:=1 to ling[t,0] do
      if (not pan[ling[t,k]])and(d[t]+1<d[ling[t,k]]) then
      begin d[ling[t,k]]:=d[t]+1;inc(wei);q[wei]:=ling[t,k];pan[ling[t,k]]:=true;end;
      end;
      这是我的spfa。。=。=d是最短距离,shou是队首指针,wei是队尾指针,pan是判断节点是否松弛过,ling是临界表,q是队列。。=。=好吧写得很丑吐槽轻点我怕疼。。

    • @ 2014-09-10 21:54:07

      好吧,我50分,因为字符串操作花的时间太长
      怎么办

    • @ 2014-09-10 22:16:40

      凉拌。

  • @ 2014-09-07 10:39:42

    球小岛大神三四题的题解..

    第二题因为变换后的坐标的两个M写成了N 本来100结果变50了..哭瞎..

    • @ 2014-09-07 22:29:32

      第四题是水题呀...解答我丢那一题的题解里面了...NOIP普及组难度的题目.
      第三题是好题, 动态规划. =_= 大概你考虑状态 f[i][j] := 前i个人坐下后, 有j个"团体", 然后自己闹补后面的, 详细情况等我有空了再写题解.

    • @ 2014-09-09 22:31:40

      orz...第四题真“良心”noip普及组难度... 这个状态数量真心有点大...
      第三题的题解我看了,但是疑惑仍然还有,题解里是这样说的:

      如果i , j确定了,且依次每一个团体是哪些人也知道了(旋转意义下的顺序,也就是说"A"+"BC"+"DE"与"BC"+"DE"+"A"被看作是相同的顺序)那么,满足给定i , j 和给定团体 的方案总数,是可以通过 i , j 算出来,这里我们需要的只是组合数学的方法。

      f[i][j]确实可以说是确定了i,j,但是“依次每一个团体是哪些人”似乎并不能根据i,j确定吧..
      0010200和0010020这两种都是两个人,两个团体,但接下去的转移却不是一样的..

      小岛大神能不能详细说明一下这个问题?

    • @ 2014-09-10 02:06:02

      第四题7百万的有向图,BFS一次怎么也不可能超时的, 一点也不大. >_<

      第三题,你所提到的0010200和0010020都被看作是状态<2,2>因为都是2个人, 当前是2个团体, 你可以思考这样一个问题:"给定N个座位围一圈, K个人坐上去了, 它们是按照顺序的, [也就是第一个人的右边是第二个人(有可能存在些许间隔), 第二个人右边是第三个人, ... , 第K个人右边是第一个人] 形成了G个团体的方案, 是多少?" 这个答案只与N, K, G有关. 那么类似的, 我给定任何一个K个人的全排列 (记为t1...tk) 并要求它们按照这个全排列的顺序去座位 (允许相邻两个人中间有间隙, 且桌子是圆形的), 满足的答案个数总是一样的. 所以我们可以不要考虑最后的间距是多少, 也不用管每一个人坐在哪里, 只要最终的排列确定下来了, 总方案就确定了. 那么到底有多少可行的最终的排列呢?(实际上是有多少可行的圆排列?) 就需要递推算出来.

    • @ 2014-09-11 22:25:43

      唔..似乎明白了..谢小岛大神啦orz..

  • @ 2014-09-07 07:55:57

    。。。。

  • @ 2014-09-06 22:46:37

    真心需要数据啊。。可以发我邮箱吗?ltt688@163.com。。第一次参加网上的模拟赛好激动啊(虽然被虐了)。。=。=

  • @ 2014-09-06 22:24:02

    请问能不能给几组第一题的数据供修改

  • @ 2014-09-06 22:15:06

    评测已完毕

  • @ 2014-09-06 22:11:19

    评测id:540b0c3048c5fccc3d8b4589
    tle
    但是同样的代码
    评测id:540b106c48c5fcc33f8b457a
    是ac的T_T
    求重测

    • @ 2014-09-06 22:13:25

      比赛用统一评测器 Jtwd2, 所以不予重测.

    • @ 2014-09-06 22:14:34

      比赛是统一使用的jtwd2评测的。

      非比赛递交会自动分配评测机,可能不是同一台。

  • @ 2014-09-06 21:59:57

    t3数据太弱。。。瞎搞能搞到59分T_T

  • @ 2014-09-06 21:56:53

    1) 直接BFS, 然后排序后输出, 注意: 或许需要用筒排或Trie之类的方法; 此外不用BFS而去尝试最短路径应该是要超时的.
    2) 先尝试对地图进行45度旋转, 之后需要做的就是二维平面的区间维护, 询问等价于区间求和,
    3) 这一题是本次比赛最有意思的一个题目,其程序也是最好写的, 不妨先将旋转意义下相同的, 以及"团体"关系相同的视作一类, 则每一类中的方案个数是可以通过简单的组合数学得到的, 之后尝试F[i][j]表示前i个人组成了j个团体,再依次通过F[i-1][j-1] F[i-1][j] F[i-1][j+1]推导来得到就可以了.
    4) 我们来考虑一下到底有多少状态, NN(<=2020)的地图, 蛇的长度是最大是L<=8,如果确定了蛇头的位置, 后面身体的每一段, 都可以用 {L,R,U,D} 来维护方向, 所以总的状态最多也就只有: 20204^7 <= 7,000,000.把每一个状态抽象为一个 结点, 可以得到一个有向图 G=(V,E), 其中点集大小 |V| <= 7,000,000, 边集大小 |E| <= 4*|V|, 所有边权都是1,问题就变成了在 G 中求两点最短路径, 那当然 BFS 一次就可以啦.

    以上是简要解答
    详细解答我会尽快写好后放在每一题的 题解 中

    • @ 2014-09-06 22:50:18

      T1可以转成有根树DFS吗,感觉似乎可以,比赛的时候还在上晚修真是坑的1B。确定难度小于NOIP提高组?

    • @ 2014-09-07 10:40:24

      首先确定小于提高组………………(T3不一定…………
      然后 T1 为毛要转有根树…………直接在图上 BFS 不一样么…………
      (其实这套题神犇 1.5h- 就可以 AK 啦>.<
      可惜我是脑残。

    • @ 2014-09-07 14:34:30

      我感觉去年前两天前两题都比这个简单,我感觉T3还是有思路的,跟题解差不多,T4丝毫思路都没有

    • @ 2014-09-09 13:39:59

      T4是小学题, 你说写错还情有可原, 你说没思路那noip还怎么考?

  • @ 2014-09-06 21:48:11

    请问哪里有成绩排名?

    • @ 2014-09-06 21:54:16

      正在评测中,评测完毕后在比赛页会有的。

    • @ 2014-09-06 22:15:32

      可以查看了

    • @ 2014-09-06 22:25:59

      有么有标程?

    • @ 2014-09-09 13:40:51

      当然有标程, 但是并不会公开. 其实也没有公开的必要.

  • @ 2014-09-06 21:32:05

    评测进行中

  • @ 2014-09-06 21:27:13

    即将开始评测

  • @ 2014-09-06 20:23:00

    评测机暂定为运行在我计算机的一个虚拟机,cpu i7-3770,虚拟机内存2GB

  • @ 2014-09-06 19:43:25

    我觉得挺难的,以后有没有一些更简单的比赛(比如普及组?)

    • @ 2014-09-09 13:42:03

      T1 T4都是普及组的题, T2也差不多, 要是没有T3这就是一套小学题了, 你还想要如何简单? 4道a+b可否?

  • @ 2014-09-06 19:33:56

    我为什么觉得比提高组要难…………表示塔防写错了正在改

  • @ 2014-09-06 19:20:27

    请问得分是以最后一次提交为准吗?

  • @ 2014-09-06 19:07:38

    请问内存限制?

    • @ 2014-09-06 19:09:13

      512MB

    • @ 2014-09-06 19:10:12

      请问所有的题都是吗?

    • @ 2014-09-06 19:11:22

      所有题 都是 512 MB

    • @ 2014-09-06 19:11:32

      哦 我造了 谢

  • @ 2014-09-05 21:44:49

    OrzOrz

  • @ 2014-09-05 20:07:36

    orz orz

  • @ 2014-09-05 17:23:39

    为什么我觉得小岛大神的那两道题很难- -是我太水了么。。不过还是蛮关注这场比赛的 考虑下是否参加

    • @ 2014-09-05 20:36:52

      那两个题目呀, 一个是 树型动态规划, 只要维护5组状态 : "车进车出" "车进人出" "人进人出" "车进不出" "人进不出" 就可以了. 还有一个题目呀是基础数据结构题, 嘛..你可以去学习下Splay之类的.

  • @ 2014-09-05 12:49:31

    RE: 已经公开的消息
    (0) orz 神犇又来嘲讽了
    (1) hehe
    (2) ………………(原创题窝就可以滚粗啦>.<
    (3) ………………
    (4) ………………(TG或更简单 0.0
    (5) ………………

    窝已经被题目吓傻啦T_T
    祝大家玩耍愉快……………………
    感谢您对 Vijos 的支持。

  • 1