DP
文章平均质量分 67
xsbailong
fighting~
展开
-
zoj_1666
终于搞定这道dp。。休息下。。/*zoj_1666 dp看来我的dp还是烂成渣。。。想了N久还参考了别人的代码才搞懂。。方法:f[i][j]表示用前i个钱币表示总钱数j的方法数。 可以得到递推式f[i][j]=f[i-1][j-k*i*i] (原创 2011-10-05 21:20:17 · 644 阅读 · 0 评论 -
zoj 2527 Series
/*zoj_2527 dp题意:从给出的序列选出n个数,组成等差数列,求最大的n思路:dp[i][j]表示以num[i]、num[j]开头的数列,记忆化搜索易写 这题要注意的是必须剔除相等元素,再查找数时可用二分。*/#include #include #include #include using namespace std;int dp[1010][101原创 2012-02-09 22:51:55 · 2464 阅读 · 0 评论 -
zoj 2705 Dividing a Chocolate
/*zoj_2705 递推引用watershi神牛的解释:从描述中可以知道,完成第一刀之后后面的发展是确定的,但由于规模很大,我们不可能去枚举第一刀的情况。可以反过来思考,事实上,知道了最后的结果,比如最后是两个a*b的矩形,那么我们也可以反过来推出之前较大的那个矩形依次是2a*b, 3a*b, 5a*b, 8a*b …,这不正是著名的Fibonacci数列么。目标是a*b尽量原创 2012-02-09 21:16:57 · 2536 阅读 · 0 评论 -
zoj 2202 Alphacode
/*zoj_2202 dp简单dp, dp[i]=dp[i+1]+dp[i+2] , 当然还要加限制条件,详见代码。特别注意的是对0的处理。*/#include #include #include using namespace std;long long dp[10000];string s;bool check( int a,int b ){ if( s原创 2012-02-04 18:46:30 · 2263 阅读 · 0 评论 -
zoj 2042 Divisibility
O(∩_∩)O哈哈~ 今天大年初一了,好冷的说~/*zoj_2042 dp简单dp dp[i][j]表示处理完前I个数,得到模M的值为J是否存在。因为犯了个低级错误,wa了数次。。以下代码写成滚动数组形式了。注意点:1.所有数都要转化为%k的余数进行dp2.负数%k是得到0或负数的*/#include #include #include using namespa原创 2012-01-23 13:04:44 · 596 阅读 · 0 评论 -
zoj 2059 The Twin Towers
/*zoj_2059 dp经典dp!这题很经典很经典。一开始以为全部小块都要用完觉的是很简单的dp,wa了无数次才发现不是每一块都一定要用的。。完全看别人的思路做的。感觉不太容易想。dp[i]表示两塔差值为i时较低塔的最大高度。*/#include #include #include #include #define max(a,b) a>b?a:busing n原创 2012-01-21 20:52:21 · 765 阅读 · 0 评论 -
zoj 1107 FatMouse and Cheese
/*zoj_1107 dp记忆化搜索的典例。注意点:1.bfs是会MLE的2.题意中的最多k步是只垂直或者只水平的。*/#include #include #include #include #include using namespace std;int v[110][110],dp[110][110];int ope[4][2]={ 0,1,0,-1,1,0原创 2012-01-20 21:22:03 · 649 阅读 · 0 评论 -
zoj 1163 The Staircases
/*zoj_1163 dp很经典的一题。这题的转移方程比较难想。 dp[i][j]=dp[i][j-1]+dp[i-j][j-1] 其中dp[i][j]表示用前j个数(即1--j)表示i的方法数。注意点:1.必须用long long2.初始化dp[0][2]为什么是1 ?最后输出为什么是dp[n][n-1]而不是dp[n][n] ? 举个例子:dp[7][4]=dp[3][原创 2012-01-19 13:01:58 · 728 阅读 · 0 评论 -
zoj 2711 Regular Words
/*zoj_2711 dp+高精度很简单的dp,不过结果是很大的,必须使用高精度。*/#include #include #include using namespace std;int dp[61][61][61][21];void print( int n ){ int i; if( n==0 ) { cout<<0; return; }原创 2012-01-18 10:45:11 · 562 阅读 · 0 评论 -
zoj 1733 Common Subsequence
/*zoj_1773 dp最大公共子串,dp基础题*/#include #include #include #include #define maxi(a,b) a>b?a:busing namespace std;int dp[1000][1000];int main(){ string a,b; int i,j,temp; while(原创 2012-01-19 18:24:49 · 731 阅读 · 0 评论 -
zoj 3502 Contest
/*zoj_3502 dp状态压缩dp,二进制压缩状态,与zoj 3471类似。注意点:1.不要被hint误导,其实仅仅是要求解出各题概率的和的最大值。2.精度控制。总结一下是要求一个最优排列的题基本上都可以用二进制压缩状态的。*/#include #include #include #include using namespace std;#define e原创 2012-01-18 16:05:59 · 574 阅读 · 0 评论 -
zoj 2711 Get Out of the Glass
/*zoj_2771 dp+高精度简单dp,不过又是要结合上高精度。。思路: 对玻璃四层(即四个交接面)分别标记为0,1,2,3 dp[i][j] 表示第j个反射点在第i层的可能数。 则易知: j%2==0时有: dp[i][j]=sum( dp[k][j-1] ); i<k<4 否则: dp[i][j]=sum(原创 2012-01-18 19:15:36 · 497 阅读 · 0 评论 -
zoj 3471 Most Powerful
效率低下的日子。。每天都好晚起,要有所改变的。/*zoj_3471 dpzoj月赛的一道题。发现网上普遍的解法都是二进制压缩状态。eg.二进制1010表示第二和第四个已经消失则有状态方程为 dp[ k|model[j] ]=max( dp[ k|model[j] ],dp[k]+power[i][j] ),表示不在k状态中的i原子和j原子相撞并使j原子撞毁所能得到的最大值。*/原创 2012-01-16 15:46:11 · 800 阅读 · 0 评论 -
zoj 1738 Lagrange's Four-Square Theorem
/*zoj_1738 dp思路:状态方程dp[i][j]表示元素i分解成j个数的平方和的可能数*/#include #include #include #define N 40000using namespace std;int dp[N][5];int main(){ int n,i,j,k; memset( dp,0,sizeof(dp) );原创 2012-01-15 16:04:21 · 839 阅读 · 0 评论 -
zoj 1602 Multiplication Puzzle
寒假已经过去那么几天了,加油了,这个寒假很关键很关键!/*dp不错的一道题。状态方程dp[i][j]=min{dp[i][k]+dp[k][j]+num[i]*num[k]*num[j]} (i<k<j)dp[i][j]表示第i个元素到第j个元素按照游戏规则所得的最优解。Process:1.一开始一直想成 dp[i][j]=min{dp[i][k]+dp[k][j]+num[k-1]原创 2012-01-15 23:31:36 · 527 阅读 · 0 评论 -
zoj 3305
这两天好多课。。不过还好星期四开始放四天的假,哈哈哈哈~/*zoj_3305 dp引用一段别人的解释:题意: 一个n<=16个元素的集合,给定m<=种备选子集,问最多可划分出多少个不相交的备选子集。(状态dp+子集枚举)核心思想是二进制表现。 x = (x - 1) & st 实现了子集遍历 比如 st=1110 1101 & 1110 = 1100 1011 & 1原创 2011-11-22 12:52:19 · 670 阅读 · 0 评论 -
zoj 2284 Inversion Number
/*zoj_2284 dp简单dp。题意:求n个元素(1到n)逆序对为k的排列个数思路:dp[i][j]表示i个元素有j个逆序对的排列数注意:1,0的数据输出1*/#include #include #include using namespace std;long long dp[25][205];int main(){ int n,k,i,j;原创 2012-02-12 23:05:38 · 2214 阅读 · 0 评论