X-man

导航

2013年10月1日 #

hdu 1536 S-Nim

摘要: 题意:首先输入K 表示一个集合的大小 之后输入集合 表示对于这对石子只能去除这个集合中的元素的 个数 之后输入一个m表示接下来对于这个集合要进行m次询问之后m行 每行输入一个n 表示有 n个堆 每堆有n1个石子 问这一行所表示的状态是赢还是输 如果赢输入W否则L思路:对于n堆石子 可以分成n个游戏 之后把n个游戏合起来就好了#include#include#includeusing namespace std;//注意 S数组要按从小到大排序 SG函数要初始化为-1 对于每个集合只需初始化1遍//n是集合s的大小 S[i]是定义的特殊取法规则的数组int s[110],sg[10010... 阅读全文

posted @ 2013-10-01 21:56 雨钝风轻 阅读(217) 评论(0) 推荐(0) 编辑

hdu 1848 Fibonacci again and again (初写SG函数,详解)

摘要: 思路: SG函数的应用,可取的值为不连续的固定值,可用GetSG求出SG,然后三堆数异或。SG函数相关注释见代码:相关详细说明请结合前一篇博客:#include#include#define N 1001//f[]:可以取走的石子个数//sg[]:0~n的SG函数值//hash[]:mex{}int f[N],sg[N],hash[N];void getSG(int n){ int i,j; memset(sg,0,sizeof(sg)); for(i=1;i<=n;i++) { memset(hash,0,sizeof(hash)); f... 阅读全文

posted @ 2013-10-01 21:20 雨钝风轻 阅读(296) 评论(0) 推荐(0) 编辑

博弈的SG函数理解及模板

摘要: 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Grundy函数g如下:g(x)=mex{ g(y) | y是x的后继 },这里的g(x)即sg[x]例如:取石子问题,有1堆n个的石子,每次只能取{1,3,4}个石子,先取完石子者胜利,那么各个数的SG值为多少?sg[0]=0,f[]={1,3,4},x=1时,可以取走1-f{1}个石子,剩余{0}个,mex{sg[0]}=mex{0} 阅读全文

posted @ 2013-10-01 20:49 雨钝风轻 阅读(448) 评论(0) 推荐(0) 编辑

hdu 2964 Prime Bases(简单数学题)

摘要: 按照题意的要求逐渐求解: #include#include#includeusing namespace std;int prime[10]={2,3,5,7,11,13,17,19,23};char zhishu[10][40]={"2","2*3","2*3*5","2*3*5*7","2*3*5*7*11","2*3*5*7*11*13","2*3*5*7*11*13*17","2*3*5*7*11*13*17*19"," 阅读全文

posted @ 2013-10-01 20:27 雨钝风轻 阅读(286) 评论(0) 推荐(0) 编辑

hdu 1124 Factorial(数论)

摘要: 题意: 求n!的尾0的个数分析: 0一定是由因子2和5相乘产生的; 2的个数显然大于5的个数,故只需统计因子5的个数 n/5不能完全表示n!中5的个数(egg: 25),应该n/=5后,累加上n/2。 (每个因子5相隔5个数字,将间隔看成一个数,然后隔5个,又出现因子5)#includeint main(){ int n,ans,x; scanf("%d",&n); while(n--) { ans=0; scanf("%d",&x); //x/=5; while(x) { ... 阅读全文

posted @ 2013-10-01 16:54 雨钝风轻 阅读(174) 评论(0) 推荐(0) 编辑

八数码问题(未解决)

摘要: #include#include#include#includeusing namespace std;int f[4][2]={1,0,0,1,-1,0,0,-1};char map[3][3];int stx,sty;string ans;struct Node{ int value; int ss[10]; bool operator q;void Dfs(int step,int sum){ while(!q.empty) { Node t=q.top(); q.pop(); } for(int i=0;i<n;i+... 阅读全文

posted @ 2013-10-01 15:00 雨钝风轻 阅读(200) 评论(0) 推荐(0) 编辑

CF A. Xenia and Divisors

摘要: 题目大意: n(为三的倍数)个数的一个序列(每个数均不大于7),找出a,b,c a能被b整除,b能被c整除,序列中的每个数都被用到。1 2 3 4 5 6 7只有 1 2 4 1 2 6 1 3 6才能满足。设他们分别有 x,y,z个#include#include#include#includeusing namespace std;int a[100100];mapm;int main(){ int i,n; int flag=0; while(scanf("%d",&n)!=EOF) { m.clear(); memset... 阅读全文

posted @ 2013-10-01 10:18 雨钝风轻 阅读(230) 评论(0) 推荐(0) 编辑