http://acm.hdu.edu.cn/showproblem.php?pid=1536
题意:同nim...多堆多询问...单堆n<=10000,每次取的是给定集合的数= =
#include <cstdio> #include <cstring> using namespace std; bool b[105]; int s[105], f[10005]; int main() { int k, m, n; while(scanf("%d", &k), k) { for(int i=0; i<k; ++i) scanf("%d", &s[i]); for(int i=1; i<=10000; ++i) { memset(b, 0, sizeof b); for(int j=0; j<k; ++j) if(i>=s[j]) b[f[i-s[j]]]=1; for(int j=0; j<=k+1; ++j) if(!b[j]) { f[i]=j; break; } } scanf("%d", &m); for(int kk=0; kk<m; ++kk) { scanf("%d", &n); int ans=0, t; for(int i=0; i<n; ++i) { scanf("%d", &t); ans^=f[t]; } ans?putchar('W'):putchar('L'); } puts(""); } return 0; }
这样刷水好无聊....
同sg..