ACM-动态规划问题及数学问题
文章平均质量分 61
化蝶飞舞
正直阳光快乐直爽
展开
-
杭电2191,有关背包问题1
#include#includeint max(int a,int b){ if(a>b)return a; else return b;}int main(){ int i,t,n,m,h,c,p; int z[1000]; scanf("%d",&t); while(t--) {转载 2013-04-16 21:23:29 · 667 阅读 · 0 评论 -
尼姆博弈————(杭电2176题)可以做!
尼姆博弈有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种局势,首先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是(0,n,n),只要...原创 2013-05-17 15:06:59 · 626 阅读 · 0 评论 -
博弈题方法
博弈论(一):Nim游戏重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示位异或(xor)运算。Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,...转载 2013-05-05 10:00:44 · 853 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1907,与杭电2509题类似。
题意:有一盒糖,里面有M中颜色的糖果,每种有Mi个,Jone和他Brother两个人轮流拿糖,每次可以拿任意颗一种颜色糖,不能不拿,谁拿到最后一颗谁输。解题思路:利用SG函数,与NIM,求出SG的值!此题与杭电2509题类似,主要注意条件不同,所产生的SG就不同,并且要注意当它的每堆数量为1时,要分析清楚!!!#include<iostream>#include<c...原创 2013-05-07 20:08:10 · 831 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1525
题目大意是给定两个数a,b,Stan always starts.规则是,每次只能把比较大的数减去比较小的数的整数倍,最后两个数中只要有一个数为0就结束,最后操作了的人为胜。首先注意条件:当有一个数为0时;当大的数可以整除小的数时,当大的数比小的两倍还大时;就输出;否则继续进行变化;这里注意下在交换时注意,三个数交换时,必必须中间为(,)见代码:#include<iostream...原创 2013-07-19 20:55:26 · 626 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=2516
这是另类的博弈,于其三种基本博弈有所差别的,我也是借鉴别人的代码,才弄懂的,,这是一类斐波那契博弈,当所述的n满足斐波那契函数就是必败的,这里我就不多做解释。记住只要等于斐波那契函数式,就是必败,否者就是赢的。以下就是所AC的代码:可供参考:#include<iostream>#include<cstdio>#include<cmath>usi...原创 2013-07-19 17:28:30 · 1379 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=2925
题目意思:一对人n,念到某一个数的人出列,最后后剩下的是几号?这就是典型的约瑟夫环问题!思路:根据每一次都是某一个数的倍数,依次递减!具体思路自己慢慢体会!#include<stdio.h>int main(){ int n,m,i; while(scanf("%d%d",&n,&m)!=EOF&&(n||m)) {...原创 2013-06-04 20:18:38 · 892 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1527..
这不是我写的啊!我自己也考虑不是很清楚哦!!看懂的给点建议哈!!1、在一堆石子中取走任意多颗;2、在两堆石子中取走相同多的任意颗;约定取走最后一颗石子的人为赢家,求必胜策略。两堆石头地位是一样的,我们用余下的石子数(a,b)来表示状态,并画在平面直角坐标系上。和前面类似,(0,0)肯定是 P 态,又叫必败态。(0,k),(k,0),(k,k)系列的节点肯定不是 P 态,而是必胜态,你面对...原创 2013-05-24 21:47:27 · 626 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1722
杭电1722:有题目意思可知:具体思路:因为有两张情况当为q 时,就把蛋糕分为q 份,当为p时,就分为p 分,由此可知,一块蛋糕在人数不同时,不可能两次都切在同一个位置,因此可以先求出#include<iostream>#include<cstdio>using namespace std;int gacd(int x,int y){ int...原创 2013-05-17 18:48:56 · 673 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1034
题目意思:有输入N在第一行,然后接下来的有N行,分别是N个人的糖果数,而且老师一吹口哨,每个人都给自己右边的人二分之一自己的糖果数,如果分后糖果数量为奇数,则老师在给他一颗糖,直到每人的糖果数相等为止,问:这样老师要吹多少次口哨,并且此时糖果数为多少?思路:首先由题可知:a[1]=a[1]/2+a[n]/2;则a[i]=a[i]/2+a[i-1]/2;这样循环,(直到i==n)为止。一下为...原创 2013-05-28 17:07:19 · 735 阅读 · 0 评论 -
http://poj.org/problem?id=3233
poj3233题:意思就略!!首次做矩阵题,说实话,哎,看别人的看了好久,这还是在看了理论的基础上。总之对于矩阵题,现在有点思路了,但是对于较为复杂的,我估计我还是会遇到困难的。还把就对于这道题,我是看大神的代码的!然后自己在模范这敲一遍!但是对于具体过程我理解了,因此也就把自己的一些领悟写写咯!!对于矩阵题:首先要回把复杂度降下来,因为对于大部分矩阵幂,数据会大些,但是时间又会限制,因此...原创 2013-08-01 17:05:33 · 673 阅读 · 0 评论 -
贪心算法讲解
一.贪心算法的基本概念 当一个问题具有最优子结构性质时,我们会想到用动态规划法去解它。但有时会有更简单有效的算法。我们来看一个找硬币的例子。假设有四种硬币,它们的面值分别为二角五分、一角、五分和一分。现在要找给某顾客六角三分钱。这时,我们会不假思索地拿出2个二角五分的硬币,1个一角的硬币和3个一分的硬币交给顾客。这种找硬币方法与其他的找法相比,所拿出的硬币个数是最少的。这里,我们下意识地...转载 2013-07-26 15:39:34 · 1084 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1789
这是道贪心题:虽说简单。但是对于刚接触的人来讲,看懂都有点困难,因为不知道从哪下手!就拿我来讲吧!就是这样的概念。还是找到学长讲解了一下,才略懂点。这不就赶紧把思路整理下。讲到这道题就必须说下题意,为什么n??因为当时我就因为题意不明确,才看别人的代码好模糊。题意是:给的第一个数;测试n 组数据,接下来一行就是m ,指的是有m们功课。接下来的两行就是每门功课必须完成的期限,和每门功课完成后...原创 2013-07-26 19:38:54 · 729 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1051
这是一道贪心算法题:对于贪心算法,是首次接触,对于这样的算法,还不太熟,对于基本的算法还是有待提高。加深理解。这道题我当初做时也是没有想到用贪心,因为本身就对算法还不熟,早些时期有点接触,但是没有深入了解他,因此当遇到这样的题目时,就没什么想法。我当初想到的是用背包做,当时发现行不通。因此一直放着没做。今天再次接触贪心算法时,才又又拿回来。对于贪心、我觉得应该注意与背包(dp)区分开:首先就是...原创 2013-07-26 15:37:29 · 607 阅读 · 0 评论 -
杭电2571(DP)。
http://acm.hdu.edu.cn/showproblem.php?pid=2571题意:求出从从(1,1)走到(n,m)的最大值!并且必须按要求走!!另外一种就是用搜索做!求出最大的值!状态方程:sum[i][j]=max{sum[i-1][j],sum[i][k]}+v[i][j];其中1具体见代码:#include#include#include#inclu原创 2013-11-14 21:54:38 · 841 阅读 · 0 评论 -
杭电1505题.
http://acm.hdu.edu.cn/showproblem.php?pid=1505题意:题目要求我们在给出的一个n*m的矩阵里面积求出他的最大可利用的面积。就是算出可以组成多大的面积(最大),最大的面积中间不可以有被占领的土地。次题类似与1506题,只是其中要有点变化,就是怎么把其中的“F”(空地),变成我们所需要用的高度呢?而且棘手的是这题还是二维的,这样就加大了难度,因此有必原创 2013-11-14 17:12:20 · 821 阅读 · 0 评论 -
http://poj.org/problem?id=1384
呵呵,再交一道水题!虽说是水题,但是我还是初学者,慢慢先看懂再说,我是先看下别人的,然后自己再加以理解的,首先对于这样的DP题现在还是不熟悉,毕竟刚接触。对于道水题,我有些自己的想法,因为这是一道完全背包题。我觉得做背包题,最主要的就是要找到它的变化趋势,他是怎样变化的,下一步是如何变化,最好找到中间的状态量,弄清楚中间(也就是整体的改变趋势)状态的。说白了就是首先找出状态方程,这样基本上就解原创 2013-07-24 19:21:01 · 740 阅读 · 0 评论 -
http://poj.org/problem?id=1276
一维背包问题:对于这个题目我觉得对于我来讲:首先我算是初次接触背包问题!因此有些地方就是借鉴别人的啦!自己现在还没什么具体思路与想法!先接触吧,对了解主要解题思路吧!希望大家谅解!对于这个题目:在网上看到多数是利用多重背包解决的,但是看不太懂,但是有个还是可以看懂,是利用一维背包,直接就是穷举得出结果。我觉得还是比较容易接受。但是对于多重的背包,我还得继续熟悉。回归正题:这个题目为什么可以原创 2013-07-24 16:40:27 · 848 阅读 · 0 评论 -
杭电2159背包问题!
#includeint A[101][101];//定义一个数组! using namespace std;int main(){ int i,j,t,n,m,k,s,a,b; while(scanf("%d%d%d%d",&n,&m,&k,&s)!=EOF) { memset(A,0,sizeof(A));//首先赋初值,原创 2013-04-16 21:27:46 · 742 阅读 · 0 评论 -
杭电3469---简单二维背包!!
http://http://acm.hdu.edu.cn/showproblem.php?pid=3496题目意思:某人去店里买东西,买DVD。首先由测试数据,接下来是有你,n,m,l,的数据,n表示有某人想买n 个DVD,m表示:有M个店会买这个DVD,l表示:总给出l的时间去买DVD。就下来就有n行,分别有x,y,两个个数据。x表示:买一个DVD 需花的时间,Y表示:买这个DVD所需要花的原创 2013-09-12 20:55:32 · 625 阅读 · 0 评论 -
杭电1712--分组背包。。
题意略。思路略;;具体见背包讲解。。这个还好理解。。。#include#include#include#include#includeusing namespace std;const int maxn=105;int dp[maxn];int a[maxn][maxn];int n,m;int main(){ int i,j,k;原创 2013-09-12 21:39:36 · 603 阅读 · 0 评论 -
杭电3033---有一点难度的分组背包。。
http://http://acm.hdu.edu.cn/showproblem.php?pid=3033题意就自己理解:主要思路:就是在01背包上做出点改动,还有要注意的就是dp数组的初始化会有所不同,,这需要注意,很关键。。(其实这题我并非靠我个人的能力解决的,看了神牛的代代码,才有所感悟。。)好了,见代码吧:#include#include#include#inc原创 2013-09-13 18:45:15 · 788 阅读 · 0 评论 -
杭电1494---01背包。
http://http://acm.hdu.edu.cn/showproblem.php?pid=1494题意很清楚,略。思路和显然这是一道背包题。但起初一看到是并不太确定是什么背包?但是仔细分析后还是时候可以确定的。首先我自己一开始做时遇到了一点问题。主要就是不太确定定用那个式子,dp[i][j]中的i,j,不确定。因此一直停滞不前。最后看了大牛的代码,才明白。在这里我就只说我自己在这里原创 2013-09-30 18:33:27 · 600 阅读 · 0 评论 -
http://poj.org/problem?id=1948..二维01背包。。
http://http://poj.org/problem?id=1948题意:题目给出n 个数、依次为a[i],,是有N块长为a[i]的木板,要求围成三角形, 并且要求三角形的面积最大。并且在最后面积*100.具体思路:首先要求怎样利用这木板,并且让他们怎样组合,并且组合肯定有好多组合,因此在判断出组合后,还得依次标记一下,等到接下来求面积是判断。思路基本就这样,因此就是要求出怎样的原创 2013-09-25 11:53:52 · 583 阅读 · 0 评论 -
杭电1080-Lcs+DP(**有借鉴**)
http://acm.hdu.edu.cn/showproblem.php?pid=1080首先题意:题目意思是:要求你必须按照给出的一个表格每一对字母对应的值。怎样才能在求出两个字符串最长子字符串的同时,得出最大的值。具体思路:首先根据LCS的公式的出最长的子串。再根据DP的思想求出最大的值,球最大的值时可以加“-“;来保证值最大!(开始对于LCS)不太理解,有点难。具体细节见代原创 2013-11-01 18:34:21 · 666 阅读 · 0 评论 -
杭电1171(一维背包+完全背包)
http://acm.hdu.edu.cn/showproblem.php?pid=1171题目意思:要求:把给出的物品分给两个学院,保证前个必须大于后一个院。给出的数据是:物品的价值,和数目.思路:一开始我想到直接一维背包,后来想想,不行,万一在球的中途求得只并非最大,但是你有判断不了。因此这里可能不能直接一维背包不能解决,但是必须加是上完全背包,对每一个组数据,进行判断(与总和的一原创 2013-11-17 18:33:56 · 674 阅读 · 0 评论 -
杭电2577
点击打开链接http://acm.hdu.edu.cn/showproblem.php?pid=2577题目意思求出操作次数最小?最少只要多少次就可以输完一串字符!!这里唯一要注意就是要考虑是否开(Capslock)是否关,,什么时候开启,怎样开启!到哪了关闭!最后是否关闭?这里也就要分别用两个数组来保存开/关次数。并且最终判断出开关哪个用的次数最少!!具体见代码:#inclu原创 2013-11-17 21:15:29 · 654 阅读 · 0 评论 -
杭电2844(背包+进制的处理)。
点击打开链接题目意思:要求你再给出的M范围(1~M),分别用给出的钱币,以及所对应的数量。求出看能并凑出的钱数有多少在(1~M)之间,包括边界。。此题一看就应该可以猜到是用DP做,还有就是可以想到利用母函数。但是再看看数据,就可以排除一般DP,还有就是母函数的M值太大,可能会超时,因此这也是不可行的。因此就看看DP可以完成了吗!!但是若直接DP可能也会数据就太大,因此也就要分开考虑原创 2013-11-20 15:41:07 · 935 阅读 · 0 评论 -
杭电1506题。
http://acm.hdu.edu.cn/showproblem.php?pid=1506题意:给出好多矩形,每个矩形的宽已规定为1,高度为输入的h[i],要求我们求出其中面积最大的矩形!!求面积。即求出哪些靠在一起的矩形的最大面积。首先的很容易想到的就是直接求,但是一看数据太大,靠暴力是解决不了的!!因此参考了别人的方法,可以根据: ( 对于每一块木板,Area=原创 2013-11-14 16:56:01 · 869 阅读 · 0 评论 -
背包问题——解析
背包问题精讲(模板)分类: 背包问题—透析(模板)关于背包问题的讲解,有篇DD牛写的《背包问题九讲》,凭我这水平怎么说也没有这篇文章说的清楚,直接看文章吧。我只把我认为的比较概括的东西写出来。看完背包九讲再来看这个会比较好,我这个只是对背包九讲的总结加上一点点自己的总结和一些经典题目。标注:下文n即为物品件数,c[i]表示第i件物品的耗费(体积),V为背包容量,a[i]表示第i件物品...转载 2013-09-12 17:04:08 · 686 阅读 · 0 评论