【codevs1037】取数游戏

根源思想:贪心

是否有必胜策略,取决于环上所有非0链的长度。因为对于一条非0链,只有当其长度为奇数时先手的人有必胜策略。

由此,统计所有非0链的奇偶性。

特别的,由于读入时已经破环为链了,需要再处理下断开的部分。就是要从头和尾同时计一次非0链长度。

原因:不妨感性的思考一下,如果你不全部取走,我走反向边取走剩下的所有边权,你就被堵在里边了

代码巨短,如下

var
  a:array[1..20] of longint;
n,i,j,min1,min2:longint;
begin
   readln(n);

   for i:=1 to n do read(a[i]);
   for i:=1 to n do if(a[i]=0)then begin min1:=i-1;break;end; 
   for i:=n downto 1 do if(a[i]=0)then begin min2:=n-i;break;end;
   if(min1 mod 2=0)and(min2 mod 2=0)then writeln('NO')else writeln('YES');
end.

 

posted @ 2015-09-10 13:41  ROLL-THE-FIRST  阅读(127)  评论(0编辑  收藏  举报