上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 85 下一页
  2012年3月6日
摘要: HDU_1085 这个题目可以用完全背包问题的思路去解,为了练一下生成函数,我就用生成函数的思路写了一下,构造生成函数G(x)=(1+x+x^2+…+x^n1)(1+x^2+x^4+…+x^(2*n2))(1+x^5+x^25+…+x^(5*n3)),最后按x,x^2…的顺序看哪一项的系数为0即可。#include<stdio.h>#include<string.h>#define MAXD 5#define MAXM 8000int f[MAXD][MAXM], elem[] = {0, 1, 2, 5}, num[MAXD], S;int init(){ int i 阅读全文
posted @ 2012-03-06 01:15 Staginner 阅读(211) 评论(0) 推荐(0) 编辑
  2012年3月5日
摘要: HDU_1028 这个题目可以用dp去解,用f[i][j]表示取到i这个数时和为j的方案数。 为了练一下生成函数,我就用生成函数的思路写了一下,构造生成函数G(x)=(1+x+x^2+…)(1+x^2+x^4+…)…(1+x^p+x^(2*p)+…)…,然后每次查询相当于查询x^n的系数是多少。#include<stdio.h>#include<string.h>#define MAXD 130long long int f[MAXD][MAXD];int N;void prepare(){ int i, j, k; memset(f, 0, sizeof(f)); f 阅读全文
posted @ 2012-03-05 23:54 Staginner 阅读(192) 评论(0) 推荐(1) 编辑
摘要: HDU_1398 这个题目可以用dp去解,用f[i][j]表示取到i*i这种硬币时面值为j的方案数。 为了练一下生成函数,我就用生成函数的思路写了一下,构造生成函数G(x)=(1+x+x^2+…)(1+x^4+x^8+…)…(1+x^289+x^578+…),然后每次查询相当于查询x^n的系数是多少。#include<stdio.h>#include<string.h>#define MAXD 20#define MAXM 310int f[MAXD][MAXM], N;void prepare(){ int i, j, k; memset(f, 0, sizeof(f 阅读全文
posted @ 2012-03-05 23:39 Staginner 阅读(348) 评论(0) 推荐(0) 编辑
  2012年3月4日
摘要: 限于自己的水平可能题目出得多少还会有这样那样的不足,有些题目比完赛后交流的时候才知道多少有些“撞题”,还望大家见谅O(∩_∩)O~。 这次我出的题目分别是A、B、C、D、E、G,下面就和大家分享一下我自己的一些思路吧。 Problem A:A Simple Problem 这个题目是我去食堂吃饭的路上想到的,但后来也是“撞题”最严重的一个题。这个题目有一个trick,就是在判断最大值与最小值之差是否大于K时,如果用int型做减法就可能超出了int的表示范围了,因此可以在比较时先强制转换成long long int。 首先最朴素的O(N^2)的方法是这样的,枚举每个点作为区间的起点,然后依... 阅读全文
posted @ 2012-03-04 16:51 Staginner 阅读(1483) 评论(2) 推荐(0) 编辑
  2012年3月2日
摘要: HDU_1010 这个题目由于block只能经过一次,那么我们在搜索的过程中就必须要记录各个block的状态了,而且这个题目跟最短的距离并无直接联系,如果使用bfs的话还必须要将所有的路径搜到不能走或者时间到T的时候,无论是空间还是时间上都耗费很大,所以我们选用好写的dfs就可以了。 此外这个题目还有一个预先初步判断初始状态是否可达,原理就像是把格子染成国际棋盘一样,dog在奇数的时间时只能走到某种颜色的格子内,而在偶数的时间时只能走到另一种颜色的格子内,所以如果终点和起点的曼哈顿距离模2的结果和T不一样的话,肯定是无解的。至于这个表达式怎么来的,我们分几种情况讨论一下就可以得到了。#incl 阅读全文
posted @ 2012-03-02 20:54 Staginner 阅读(219) 评论(0) 推荐(0) 编辑
  2012年2月29日
摘要: 为祝贺CSGrandeur师兄考研顺利并回归ACM,为纪念CSU_BMW正式组队,CSU_BMW各队员swimming(Burn-E),Staginner(M-O),CSGrandeur(Wall-E)决定联合命题并举办一场纪念赛,欢迎各位校内外同学来玩O(∩_∩)O~ 比赛时间:2012.03.04(周日) 12:00-17:00 比赛形式:网络赛 比赛地址:中南大学OJ(点此进入) 此次比赛共7-8道中文题,赛后约1-2日内发布题解。 最后预祝大家能够在比赛中玩得开心并取得理想的成绩! P.S. 解题报告链接:http://www.cnblogs.com/staginner... 阅读全文
posted @ 2012-02-29 09:21 Staginner 阅读(463) 评论(0) 推荐(0) 编辑
  2012年2月28日
摘要: HDU_4155 首先容我吐槽一下:说好的0个数字呢…… 这个题一开始用gets读的,WA得我死去活来的,后来找了个AC的程序发现它不处理空行,于是我改成了scanf试了一下,AC了…… 这个题符合公平组合游戏的特征,所以可以用SG函数理论去解,只不过面临两个问题:第一,如何抽象成有向无环图上的游戏,其实主要也就是说每个节点应该如何描述的问题,第二,终止状态是什么。 首先,第二个问题想了一下之后解决了,尽管我们不能直接认定哪些状态是终止状态,但我们如果搜到了一个点并且发现这个点无法进行决策,那么自然就可以认为是终止状态,对应的SG函数的值也自然是0。 在想第二个问题的时候,我们就会想到,... 阅读全文
posted @ 2012-02-28 13:25 Staginner 阅读(416) 评论(0) 推荐(0) 编辑
  2012年2月26日
摘要: POJ_1082 最近没学英语了,一开始把November当成了12月,囧了。 这个题目想象成一开始在(yy,mm,dd)这个点有一个棋子,每人然后可以沿合法的位置移动一步,最后当棋子到达(2001,11,4)这个点时就算游戏结束。这样就把这个问题化归到有向无环图上的游戏了,于是用SG函数就可以解决了。 另外推荐一个讲SG函数入门知识的博客:http://www.cnblogs.com/Knuth/archive/2009/09/05/1561007.html。#include<stdio.h>#include<string.h>#define Y 1900int md 阅读全文
posted @ 2012-02-26 11:54 Staginner 阅读(272) 评论(0) 推荐(0) 编辑
摘要: POJ_2311 这个题目一开始让我头疼死了,关键就在于没办法把自己前面学的SG函数的一些理论应用进去,说道这推荐一个讲SG函数入门知识的博客:http://www.cnblogs.com/Knuth/archive/2009/09/05/1561007.html,博主有几篇和博弈相关的文章,感觉写的还是很棒的。 就我而言,首先遇到的第一个问题就是抽象不出博主在《Game theory初步》(在前面那个网址的基础上向前找博主的前几篇博客就可以找到)这篇中讲的ICG(公平组合游戏)模型,因为如果纸片出现了1*1就结束了,而其他的纸片却不一定都是1*1的纸片,如果我们把一个纸片抽象成一个游戏图上的 阅读全文
posted @ 2012-02-26 10:22 Staginner 阅读(926) 评论(2) 推荐(1) 编辑
  2012年2月24日
摘要: HDU_1849 这个题目实际上就是N堆石子的Nim游戏,具体的一些想法可以参考我的另一篇解题报告:http://www.cnblogs.com/staginner/archive/2012/02/24/2366089.html。#include<stdio.h>#include<string.h>int M;void solve(){ int i, j, k; for(i = k = 0; i < M; i ++) { scanf("%d", &j); k ^= j; } printf("%s\n", k == 0 阅读全文
posted @ 2012-02-24 13:14 Staginner 阅读(274) 评论(0) 推荐(0) 编辑
上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 85 下一页