01 2015 档案
摘要:这是道典型的母函数的题目,可以看看我的母函数这一标签上的另一道例题,里面对母函数做了较为详细的总结。这题仅贴上代码:#include"iostream" 2 using namespace std; 3 #define N 130 4 int a[N+1],b[N+1]; 5 int ma...
阅读全文
摘要:上网搜了一下这道题的解法,主要有两个方法,一种是采用母函数的方法,一种是采用0/1背包的方法。先说一下母函数,即生成函数,做个比喻,母函数就是一个多项式前面的系数的一个整体的集合,而子函数就是这个多项式每一项前面的系数。主要用于解决组合问题,类似于钱币的组合问题。利用母函数解题时,首先要写出表达式,...
阅读全文
摘要:这道题是典型的dp题。首先是数据的处理上,因为每个长方体的3条不同长度的棱都可以作为高,因此一个长方体可以看成3个不同的长方体。从而将数据扩展为3*n,然后将所有的长方体以长度为第一排序条件,宽度为第二排序条件进行排序。接着整个问题就变成了求最长递减子序列的问题了,多得到的状态方程为:dp[i]=m...
阅读全文
摘要:这是我做的第六道动态规划水题,对动态规划差不多有了一个大致的概念。动态规划有几个关键因素,第一是最优子结构,第二是状态和状态转移方程。整个过程都是以 最优 为中心的。因此在状态转移方程中常涉及到几个子状态的最优化的判断。这道题既采用了递堆的思想,又采用了一点动态规划的思想。状态转移方程为:f[i]=...
阅读全文
摘要:本想用暴力法先试试的,案例和自己找的数据都过掉了,但是始终wa,本来期待的是tle,结果始终wa。所以也就懒的管了,直接用dp来做了。主要是因为最近在刷暴力法和dp这两个专题,所以才想好好利用一下这道题。如果有哪位发现了我的第一个程序的错误,还望告知。暴力法(此程序不知道为何wa) 1 #inclu...
阅读全文
摘要:/*这道题是很明显的dp题,状态方程有点不大好想,也许是我刚刚接触dp的缘故吧。dp[i][j]表示字符串s1取前i个字符s2取前j个字符时最大公共子序列的大小,这样的如果s1[i]==s2[j],dp[i][j]=d[i-1][j-1]+1;如果s1[1]!=s2[j],dp[i][j]=max{...
阅读全文
摘要:/*题目一大堆,其实意思就是长度为n个二进制数,里面有h个1,将这个二进制数进行全排列,然后输出*/ 1 #include"iostream" 2 #include"algorithm" 3 #include"stdio.h" 4 #include"string.h" 5 #include"cmat...
阅读全文
摘要:#include"iostream"#include"stdio.h"#include"string.h"#include"algorithm"#include"stdlib.h"using namespace std;char s[100];int main(){ int t; cin...
阅读全文
摘要:/*极水的题。。。*/#include"iostream"#include"stdio.h"#include"stdlib.h"#include"algorithm"#include"string.h"using namespace std;char s[1005];int main(){ w...
阅读全文
摘要:/*求最大字段和,d[i]表示已i 结尾(字段和中包含i )在a[1..i] 上的最大和,d[i]=(d[i-1]+a[i]>a[i])?d[i-1]+a[i]:a[i];max = {d[i],1>t; int count1=0; while(t--) { coun...
阅读全文
摘要:/*表示刚刚接触dp。这是我接触到的第3道dp题,刚开始以为是要用dfs+dp,后来栈溢出。。。仔细想想,其实这道题和数塔差不多,只要每步都得到最优子结构,最后结果一定是最优的。题目的初始化要做好,这样可以避免很多的麻烦*/#include"iostream"#include"stdio.h"#in...
阅读全文
摘要:http://url.cn/YOwUAk
阅读全文
摘要:/*dp入门级的题目,和数塔是一样的,这道题不用做什么优化,感觉时间复杂度不会超。主要还是细节上的问题,这道题的状态和状态方程都容易找到,采用自底向上的方式会好很多*/#include"iostream"#include"algorithm"#include"stdio.h"#include"str...
阅读全文
摘要:/*刚开始题目没怎么看懂,以为就是将给的n组数据中同时将每一列全部变成0,如果没有重复的,说明此列可去掉。后来发现这样想是不对的,会存在很多错误。仔细读题才发现,这道题的意思是找到一个n位的二进制数i,让它与n组给定的数据进行&操作,如果操作完后n组数据任不同,则i是可取的,但是我们要取的是n为数字...
阅读全文
摘要:/*这道题我原本是将斜线迷宫扩大为原来的两倍,但是在这种情况下对于在斜的方向上的搜索会变的较容易出错,所以参考了别人的思路后将迷宫扩展为原来的3倍,这样就变成一般的迷宫问题了*/ 1 #include"iostream" 2 #include"stdio.h" 3 #include"algorith...
阅读全文