如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。
URAL/1087
来自"NOCOW"
< URAL
递推 设f[i]表示剩下i个石子时第一个人是否有必胜策略
program t1087; var k:array [0..10001] of longint; f:array [0..10001] of boolean; n,m,i,j:longint; begin readln(n,m); for i:=1 to m do read(k[i]); f[0]:=true; for i:=1 to n do begin f[i]:=false; for j:=1 to m do if i>=k[j] then if not f[i-k[j]] then begin f[i]:=true; break; end; end; if f[n] then writeln(1) else writeln(2); end.
顺推 直到n为止.
program cyd; var s:array[1..100]of longint; v:array[1..20000]of integer; i,j,k,l,m,n,a,b,c:longint; procedure print(x:integer); begin writeln(x); halt; end; begin readln(n,m); for i:=1 to m do read(s[i]); v[1]:=2; j:=1; repeat while v[j]=1 do inc(j); if j=n then print(2); for i:=1 to m do if j+s[i]<n then v[j+s[i]]:=1 else if j+s[i]=n then print(1); inc(j); until false; end.