上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 32 下一页
摘要: DP(DAG上的DP)题意:给你一个目标金额n,有5种硬币50,25,10,5,1,每种硬币无限个,用这些硬币构成这个目标金额n,有多少种不同的构建方法看做一个有向图处理:好像11能减去5得到6,那么有向边11--->6,同样11减10可以得到1,那么有有向边11--->1其实其他就是问n到0有多少条不同的路径。下面是注意处理的问题好像6,1+5和5+1是一样的只能算为一种情况。没了防止这种情况我们采用减序构建,好像5511是唯一一种它是减序的,5151这些就不是了这样做就不会重复,但是有可能漏掉,所以要记录前驱用的是哪一种硬币这样做不仅能防止重复还能防止遗漏,具体看代码另外一点, 阅读全文
posted @ 2012-12-25 19:44 Titanium 阅读(638) 评论(0) 推荐(0) 编辑
摘要: 水题(不知道归在哪一类)无意间看到的一题…………觉得比较水有比较无聊就AC了,本来想写二分的后来发现没必要,就一个线性扫描过去即可从大到小排序,每次在两堆糖果里面轮流取,其中一堆取完后就取接下来的那一堆,取到最后结束。看最后剩下多少个糖果,<2成功,否则失败从小到大排序是不行的#include <cstdio>#include <cstring>#include <algorithm>#define N 1000010using namespace std;int a[N],n;int cmp(int p ,int q){return p>q?1 阅读全文
posted @ 2012-12-25 19:00 Titanium 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 数学题(概率基础题+暴力)题意:给你n个人,给出每个人会购物的概率,然后给你r,即r个人会购物其余人都不购物。然后需要你输出n行,第i行就是这个r个人中有一个是第i个的概率是多少其原型就是,有5个人,选3个人出来,甲在其中的概率。不过5变成了n,3变成了r。这个样子的话就是一个条件概率即pb为从n个人中选r个的概率。pa就是甲在其中的概率 pa/pb就是答案这个样的话,只能暴力了(我只能想到暴力),即在n个人中找出r个人(就是一个组合,不是排列),把这r个人的概率相乘其余人的反面概率相乘。然后所有的这些我概率相加就是pb。然后同样的,选定甲,再选r-1个人(组合),甲和这r-1个人的概率相乘. 阅读全文
posted @ 2012-12-24 22:58 Titanium 阅读(634) 评论(0) 推荐(0) 编辑
摘要: 就是一个裸的LCS,不过注意用gets读入#include <cstdio>#include <cstring>#define N 1010int main(){ int n,m,dp[N][N]; char s1[N],s2[N]; while(gets(s1+1) && gets(s2+1)) { memset(dp,0,sizeof(dp)); n=strlen(s1+1); m=strlen(s2+1); for(int i=1; i<=n; i++) for(int j=1; j<=... 阅读全文
posted @ 2012-12-23 22:34 Titanium 阅读(180) 评论(0) 推荐(0) 编辑
摘要: DP经典题目题意还是比较好懂就是矩形嵌套,不过这个矩阵是m维的,而且嵌套要严格大于。输入n和m,表示有n个维数为m的超立方体。下面n行每行m个数字,是每个超立方体的信息,即每个维的大小超立方体的信息可以调整,判断一个超立方体a能不能套住超立方体b是看调整之后能不能好像(2,6)和(7,3),可以调整为(2,6),(3,7),那么显然(3,7)是能套住(2,6)的另外能不能套住,还需要每一维都严格大于,好像(2,6),(2,7),由于2相等不能套住其实就是DAG模型,若i能套住j,则g[i][j]=1,然后这个有向图显然是无环的,(要套住必须严格大于,不可能存在互相套住的情况)。相当于求这个DA 阅读全文
posted @ 2012-12-23 00:21 Titanium 阅读(534) 评论(0) 推荐(0) 编辑
摘要: 数学题题意:多项式(x1+x2+...+xk)n.输入n和k(0<k,n<13),分别表示多项式次数和变元数。第二行为k个非负整数n1,n2,...nk,满足n1+n2+...nk=n.输出多项式(x1+x2+...+xk)n展开后的(x1)^n1*(x2)^n2...(xn)^nk这一项的系数。思路:如果单单是(a+b)^n,那我们可以轻易地用二项式定理来解决系数的问题,但是现在变量有k个,要怎么办呢?我们可以用一种递归的思想来看这道题,化繁为简,将一个没见过的问题转化为见过的(x1+x2+x3……+xk-1+xk)^n=(Xk-1+xk)^n , 即我们把前面k-1项全部加起来 阅读全文
posted @ 2012-12-22 13:31 Titanium 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 最大流 OR 二分图匹配题意:输入n,有n个插座,下面n行是每个插座的类型(最后24个字母来表示一个插座,没有空格放心用scanf,但是有可能插座会相同,但是这个没有什么影响) 输入m,有m个电器,下面m行每行两个单词分别是电器的名字和插头类型(同样24个字母单词内没空格,两个单词空格隔开) 输入k,有k个转换器,下面k行每行两个单词,分别表示转换器的入口类型和插头类型每种转换器的个数是无限的,转换器本身可以与转换器相连要你求,让最多的电器能够插在插座上(可以用转换器辅助也可以直接插上去),输入不能插上去的电器的数量思路一:转化为最大流,重点还是如何建图,我是用邻接表建图的这样效率... 阅读全文
posted @ 2012-12-21 23:55 Titanium 阅读(1079) 评论(0) 推荐(0) 编辑
摘要: 数学题,给定一个十进制数转化为-2进制。这个问题可以扩展为转化为任意的负进制,先说-2进制算法:n mod -2 余数可能为-1,0,1,但是不能出现-1,只能有0,1所以将-1变为1,并且商要加1。然后依此迭代直到商为0为止。为什么余数要变为1而且能变为1呢,变了之后要怎么做呢?我找了很多博客都没有说原理,只是简单一句话,可能大家都觉得很简单吧,但是我还是想了一段时间才想出来的,所以就写一下原理我们来看一个10进制转2进制,例子1024第0次迭代,1024/2=512,1024%2=0 , 试一下把512++变为513,那么逆回去就是1026,多了2,其实就是2^1第1次迭代,512/2=2 阅读全文
posted @ 2012-12-21 18:54 Titanium 阅读(741) 评论(0) 推荐(0) 编辑
摘要: 原文出处:http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm译文出处:http://static.icybear.net/%5BCN%5DProgrammer%20competency%20matrix.htm[译文]程序员能力矩阵 Programmer Competency Matrix注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识。计算机科学 Computer Science2n(Level 0)n2(Level 1)n(Level 2)log( 阅读全文
posted @ 2012-12-20 22:47 Titanium 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 网络流最大流(经典的逃脱问题但是不会做啊)这题不会做,问了别人的思路,知道是最大流,但是还是不会编码,后来找了解题报告,看了建图部分明白了,然后就是最大流EK算法模板即可算法思路:对于给定的网格,行为S列为A,我们按行优先给所有点标号,从1到S*A。然后对每个点拆点,拆点后一个点变为两个点(那么总点数为2*S*A),在这里我把拆点后的两个点叫做“前点”和“后点”,对于坐标为(i,j)的点,拆点后“前点”的编号为u=(i-1)*A+j , “后点”的编号好v=u+S*A;我们还要额外设置一个源点s,编号为0,一个汇点,编号为2*S*A+1。从源点s建有向边指向所有的银行,从所有网格边沿的点建有向 阅读全文
posted @ 2012-12-20 22:08 Titanium 阅读(912) 评论(4) 推荐(1) 编辑
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 32 下一页