自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

苍竹林

何不让这一场梦 没有醒来的时候

  • 博客(32)
  • 问答 (7)
  • 收藏
  • 关注

转载 让人深思的退役贴

3xian退役贴 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 最后一天,漫天飘起了雪

2014-09-11 15:19:01 638

原创 hdu1421 搬寝室(dp)

/* 先对n中物品的重量排序 令dp[i][j]表示前i个物品中选j对的最小疲劳度。 则dp[i][j]可能含有第i个物品(这种情况下,第i种物品一定是和第i-1个物品配对), 则dp[i][j]=dp[i-2][j-1]+(val[i]-val[i-1])*(val[i]-val[i-1]) dp[i][j]的j对也可能不含有第i个物品,此时有 dp[i][j

2014-09-30 22:49:55 790

原创 hdu 1069 Monkey and Banana (dp)

//把给定的长方体(不限)叠加在一起,叠加的条件是,上面一个长方体的长和宽都比下面长方体的长 /* 分析:因为每块积木最多有3个不同的底面和高度,因此先把每块积木看成三种不同的积木, 每种积木只有一个底面和一个高度。n中类型的积木转化为3*n个不同的积木的叠加, 对这3 * n个积木的长边从大到小排序;接下来的问题就是找到一个递减的子序列, 使得子序列的高度和最大即可。 数组dp:dp[i]表示是

2014-09-30 20:49:29 709

原创 hdu 2059 龟兔赛跑 (dp)

/* 把起点和终点比作加油站,那总共有n+2个加油站了, 每次都求出从第0个到第j个加油站(j<i)分别在加满油的情况下到第i个加油站的最短时间dp[i], 最终的dp[n+1]就是最优解了。 */ # include # include # include # define INF 999999999; using namespace std; int main() { int L

2014-09-30 19:31:03 830

转载 很特别的一个动态规划入门教程

很特别的一个动态规划入门教程 今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下~~~ (说明一下,本人非常痛恨教材公式定理漫天飞,实际的讲解却讲得非常枯涩难懂,这种中国式的教育已经延绵了几千年了,现在中国的教材还是这个样子,讲清楚些明白些就那么难么?高中有个老师讲的一句话一直觉得很有道理:“教得会天才不是真本事,能把

2014-09-29 20:46:48 526

原创 hdu 2521 一卡通大冒险 (斯特灵数,贝尔数)

/* 将N张卡分成若干个集合,集合不为空,有多少种分法。 f[n][m]表示n张卡分成m组的种类数,那么f[n][m]=f[n-1][m-1]+f[n-1][m]*m,//第二类斯特灵数 而ans[n]=sum{f[n][l]}(1<=l<=m)。//ans为贝尔数,Bell数是将P个元素集合分到非空且不可区分例子的划分个数。 其中:f[n-1][m-1]代表第n个人自成一堆; f[n-1][m]

2014-09-27 21:41:20 960

原创 hdu 1220 Cube (组合数学)

/* 给你一个边长n的正方体,切割成n*n*n个单位体积的小正方体,求所有公共顶点数<=2的小正方体的对数。 公共点的数目可能有:0,1,2,4. 我们用总的对数减掉有四个公共点的对数就可以了。 总的对数:n^3*(n^3-1)/2(一共有n^3块小方块,从中选出2块) 而4个交点的立方体对是两个立方体共面的情况, 所以我们只要求出大的立方体一共有多少个单位面积的公共面就可以了, 既所有单位立

2014-09-27 20:35:01 1017

原创 HDU 3037 Saving Beans (Lucas定理)

/*求在n棵树上摘不超过m颗豆子的方案,结果对p取模。 求C(n+m,m)%p。 因为n,m很大,这里可以直接套用Lucas定理的模板即可。 Lucas(n,m,p)=C(n%p,m%p,p)*Lucas(n/p,m/p,p); ///这里可以采用对n分段递归求解, Lucas(x,0,p)=1; 将n,m分解变小之后问题又转换成了求C(a/b)%p。 而C(a,b) =a! / ( b! *

2014-09-26 20:23:00 1094

原创 hdu 2177 取(2堆)石子游戏 (威佐夫博奕)

//,在威佐夫博奕的基础上新增加了一条要求:就是如果在赢得条件下,输出第一步怎么走。 # include # include # include # include # include using namespace std; int main() { int a,b,i,k; while(~scanf("%d%d",&a,&b),a+b) { k

2014-09-22 19:51:32 759

原创 hdu 1527 取石子游戏 (裸威佐夫博奕)

/* 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。 游戏规定,每次有两种不同的取法, 一是可以在任意的一堆中取走任意多的石子 二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者 */ # include # include # include # include # include using namespace std; int main() {

2014-09-22 19:12:17 783

转载 博弈类题目小结(HDU,POJ,ZOJ)

转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 首先当然要献上一些非常好的学习资料: 基础博弈的小结:http://blog.csdn.net/acm_cxlove/article/details/7854530 经典翻硬币游戏小结:http://blog.csd

2014-09-22 15:47:07 560

转载 博弈总结

以下是我从网上收集的关于组合博弈的资料汇总: 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个 人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏 ,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够 取胜。 (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每

2014-09-22 15:37:06 519

原创 poj 1704 (阶梯博弈)

首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈...每一步则是将一个集体上的若干个点( >=1 )移到前面去..最后没有点可以移动的人输.. 如这就是一个阶梯博弈的初始状态 2 1 3 2 4 ... 只能把后面的点往前面放...如何来分析这个问题呢...其实阶梯博弈经过转换可以变为Nim..把所有奇数阶梯看成N堆石子..

2014-09-18 20:40:06 577

原创 poj 3975&&hdu 1850 (nim)

//先手能赢 //从n堆石头中的一堆里去掉几颗,有多少堆石头可取 # include # include # include using namespace std; int main() { int n,sum,i,j,a[1010],cot,vis[1010]; while(~scanf("%d",&n),n) { sum=0;

2014-09-17 21:10:46 997

原创 hdu 1730 Northcott Game (nim博弈变形)

# include # include # include # include # include using namespace std; int main() { int n,m,i,a,b,cot; while(~scanf("%d%d",&n,&m)) { cot=0; for(i=0; i<n; i++)

2014-09-15 20:10:47 1346

原创 hdu 5011 (nim博弈模版)

//nim博弈 //有n堆石头,两人轮流每次从一堆中拿至少1,之多全部的石头,没有石头可拿为lose //判断先手是win还是lose # include # include # include using namespace std; int main() { int n,i; __int64 a,sum; while(~scanf("%d",&n)) {

2014-09-15 19:50:31 939

转载 Nim游戏博弈(收集完全版)

Nim游戏的概述: 还记得这个游戏吗? 给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取。最后拿光珍珠的人输。 后来,在一份资料上看到,这种游戏称为“拈(Nim)”。据说,它源自中国,经由被贩卖到美洲的奴工们外传。辛苦的工人们,在工作闲暇之余,用石头玩游戏以排遣寂寞。后来流传到高级人士,则用便士(Pennies),在酒吧柜台上玩。 最有名的玩法,是把十二枚便士放

2014-09-15 19:49:36 572

原创 poj 1745 Divisibility (dp)

//给你n个数,两个数之间可以+。-两个运算 得出的所有结果只要有能被k正除,输出Divisible,否则Not divisible # include # include # include # include using namespace std; int dp[10010][110];//第一维代表几个数相加,第二位为几个数相加%k后的余数 int b[10010]; int ma

2014-09-12 14:21:14 708

原创 hdu 1671 Phone List (字典树)

# include # include # include # include # include # define MAX 15 using namespace std; typedef struct Trie_Node { bool flag;//是否有子树 struct Trie_Node *next[MAX]; }Trie; void Insert(Trie *r

2014-09-09 19:22:57 733

原创 hdu 1250 Hat's Fibonacci (大数相加)

//a[n]=a[n-1]+a[n-2]+a[n-3]+a[n-4]; # include # include # include # include using namespace std; int a[10000][260]={0}; //每个元素可以存储8位数字,所以2005位可以用260个数组元素存储。 int main() { int i,j,n; a[1][0

2014-09-09 14:37:40 622

原创 hdu 2846 Repository (字典树)

//给出的字符串在模式串中出现几次# include # include # include # include using namespace std; # define MAX 26 typedef struct Trie_Node { int count;//记录包含该结点的单词个数 int id;//最后一次经过此结点的商品的id Trie_Node *nex

2014-09-09 14:08:40 759

原创 zoj 3818 Pretty Poem(模拟)

# include # include # include # define MAX 55 using namespace std; int L; char a[MAX]; int vis[MAX]; int judge1()//ababa { int i,j; int xx,yy,zz; char x[MAX],y[MAX],z[MAX]; for(i=2

2014-09-08 20:08:37 761

原创 hdu 4990 Reading comprehension (矩阵快速幂)

//f[n]=2*f[n-2]+f[n-1]+1 //矩阵快速幂 # include # include # include # include using namespace std; struct node { __int64 m[3][3]; }; __int64 mod; node answ,origin,d; node f(node a,node b) { __int64

2014-09-08 15:02:06 783

原创 No to Palindromes

/* 题意:给你一个字符串,寻找按照字典序排的下一个符合条件的字符串 下一个满足的字符串一定是改变尽量靠右的字符才能得到(字典序), 从最右面开始找,假设当前是第i位,如果i位增加之后满足和i-1,i-2位均不相同的话, 那么最小的肯定就是从这里开始改的(因为前缀没有回文字串,所以改变i位后的串也不会有), 接下来就把后面的为都补全。 */ # include # include # includ

2014-09-08 13:57:52 1322 3

原创 hdu 1247 Hat’s Words (字典树模版)

//那个单词是有出现的两个单词构成的 # include # include # include # include # define MAX 26 using namespace std; typedef struct Trie_Node { bool isWord; struct Trie_Node *next[MAX]; } Trie; char s[50000][5

2014-09-05 19:15:44 916

转载 程序员的心理疾病

说实话,虽然似乎为之奋斗了十多年,在真正进入软件行业的短短一年之后,我已经对它感到相当的厌倦了。这并不是说这个行业没有前景,而是在这个行业工作,其实很难得到心理上的快乐。 人们说女怕嫁错郎,男怕入错行。我并不认为自己入错了行,我仍然很喜欢设计程序和语言,而且我显然是这个领域的王牌之一。然而我却看到了这个行业里的无限混沌,让我觉得喘不过气来。几十年的垃圾设计堆积在那里,却没有人试图把它们清理掉

2014-09-04 09:50:52 459

原创 hdu 4355 Party All the Time (三分)

//函数满足凸函数性质,于是三分 # include # include # include # include using namespace std; struct node { double x; double w; }; struct node a[50010]; int n; double cal(double xi) { double res=0;

2014-09-03 15:55:29 729

原创 hdu 4529 Double Dealing (置换群)

# include # include # include using namespace std; __int64 gcd(__int64 a,__int64 b) { if(b==0) return a; return gcd(b,a%b); } int main() { int n,k,i,j,vis[810],m,num[810],x;

2014-09-03 09:53:44 784

原创 poj 1721 CARDS (置换群)

//给出置换了s次后的序列,求原序列 # include # include # include using namespace std; int main() { int n,s,t,s1,i,cot; int a[1010],b[1010],c[1010]; while(~scanf("%d%d",&n,&s)) { for(i=1; i<

2014-09-02 19:56:52 696

原创 poj 2369 Permutations (置换群)

//问最少置换多少次变成有序序列 //每个位置都有个循环节 求全部位置循环节的最小公倍数 # include # include # include using namespace std; int gcd(int x,int y) { if(y==0) return x; return gcd(y,x%y); } int lcm(int x,int y) {

2014-09-02 15:42:40 895

原创 poj 3270 Cow Sorting (置换群)

/* 对于每一个群,我们有两种换发: 1.群里换,拿群里最小的数t与其他每个数交换,共k-1次,花费为:sum+(k-2)*t. 2.将这个数列最小的数minn,拉入这个群,与该群最小的数t交换,然后用这个最小的数与其他数交换k-1次,然后再将minn与t换回来,这样 花费为:sum+t+(k+1)*minn 那么最小花费我们取两者中最小的,即sum+min{(k-2)*t,t+(k+1)*min

2014-09-02 14:02:45 899 1

原创 hdu 4982 Goffi and Squary Partition (枚举)

//给出n和k,求k个不同的正整数,使其中k-1个数能组成平方数,k个数的和为n。有解输出YES,无解输出NO。 # include # include # include # include using namespace std; int n,k; bool judge(int num) { int yy=num*num;//k-1个数相加 int kk=n-yy;

2014-09-01 15:18:31 842

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除