acm—动态规划
文章平均质量分 64
iwillsucceed555
这个作者很懒,什么都没留下…
展开
-
hdoj1466
<br />(m-r)条平行线与r条直线交叉的交点数 + r条直线本身的交点方案 =(m-r)*r+r条之间本身的交点方案数(0<=r<m)<br /> <br />#include<iostream><br />using namespace std;<br />int n,sum[22][191],t;<br />void point(){<br /> for(int i=0;i<=n;i++)<br /> sum[i][0]=1;<br /> for(int k=2;k<21;k原创 2010-08-12 15:09:00 · 605 阅读 · 0 评论 -
joj2075
贴个唐牛的代码,这道题我一开始理解错了,原以为是由m种烧饼,其实是m个烧饼,所以不存在一个烧饼被买两次的情况。。。。。确实是很好dp题啊,而且唐牛的解法也很好,我研究了好久才搞明白。。。。。。 //最优性原理:若m=5状态为10110的总花费最小值等于min(10100+cost[2]、10010+const[3]、00110+cost[5])//这里的下标表示与原创 2011-06-06 15:40:00 · 425 阅读 · 0 评论 -
hdu3076
<br />今天比赛就看了这题!!!一直超时!!!<br />解题报告是这么说的:<br /> <br />暂时没发现规律吧,那就按部就班的做吧,先把每个值算出来保存起来,然后就是单纯<br />的区间最小值问题,但是n 比较大,用线段树的话肯定超时,RMQ 的话空间存不下,那就<br />用单调队列吧。平摊时间复杂度是O(n)。其他没有需要注意的地方(不要以为有什么数论<br />结论)。<br />学了一下单调队列;<br />主要是处理动态规划的;<br />资料:<br /> <br />http:原创 2010-10-30 21:20:00 · 761 阅读 · 0 评论 -
(集合上的动态规划)最有矩阵链乘模板!!!!
<br /> <br /> //还没想出来怎样输出加了括号后结果??????<br /> <br />#include<iostream><br />#include<stdio.h><br />using namespace std;<br />const int N=3;//N为矩阵个数<br />int p[N+1];//p[i]表示矩阵维数从0到N,<br />int m[N+1][N+1];//min[i][j]用递推法时记录A[i]*....a[j]的最优计算次数<br />int s[N+1]原创 2010-10-26 18:43:00 · 506 阅读 · 0 评论 -
poj 2184
#include#includeusing namespace std;int n;int k=0,sum,maxn;int ts,tf;int vis[105];struct node{int s,f;}a[105];bool com(node x,node y){return x.s+x.f>y.s+y.f;}void dfs(int cur){ // cout if(cur>=k){ if(sum>maxn) maxn=sum;sum=0;ts=0;tf=0;return;} if(t原创 2010-09-02 17:59:00 · 806 阅读 · 0 评论 -
poj 1947
<br />树形dp!!!关键是枚举s点的所有的不去掉k子树的情况!!!<br /> <br />因为是树形DP,而子问题往往涉及的是子树的信息,所以我们要对树先进行深搜,求出子问题的解,然后再返回根节点,求根节点的信息。。。<br /> <br />#include<iostream><br />#include<stdio.h><br />#include<string.h><br />#define maxn 155<br />using namespace std;<br />int n,p;<br原创 2010-09-01 21:01:00 · 1078 阅读 · 0 评论 -
哈尔滨第二次热身赛1004
#include#includeusing namespace std;int a[305][305][305],a1[305][305],a2[305];int fun(int m,int n){ int _max=0;int sum=0;int ans=0; for(int j=0;j { for(int k=0;k for(int k=j;k for(int u=0;u ans=a2[0]; for(int x=0;x sum+=a2[x原创 2010-09-10 22:14:00 · 868 阅读 · 0 评论 -
poj3342
#include#include#include#include#includeusing namespace std;int n;vector son[205];int dp[205][2];int num;int treep(int k,int p)//k为节点标号;p为是否选的标志 {//记忆化搜索 int i,len,sum; if(dp[k][p]!=-1) {return dp[k][p];}//以被算过 len=son[k].siz原创 2010-08-28 22:09:00 · 663 阅读 · 0 评论 -
最大独立子集模板!!!(树形dp)
#include #include #include using namespace std;/*********************************/* 可以动态变化的邻接矩阵* G[i]表示顶点i的邻接点/*********************************/const int MAXN=100;vector G[MAXN]; //无根树int l[MAXN]; //结点层次int p[MAXN]; //根树int dp[MAXN]; //dp数组int sumS[MAXN];转载 2010-08-27 19:45:00 · 780 阅读 · 0 评论 -
有向树k中值问题模板!!!(树行dp)
#include using namespace std ;typedef struct binode{ int wx , w , wd , *cost , d ;//wi,vi,di分别表示编号为i 的顶点的权为wi,相应的有向边为(i, vi),其边长为di struct binode *parent , *left , *right ;}binode , *link ;int n , k ;link *subt ;link Newnode (){ link p = new binod转载 2010-08-26 21:39:00 · 1982 阅读 · 0 评论 -
zoj3384
#include#include#includeusing namespace std;int a[1005];int b[1005];int c[1005];int main(){ int n;int suma;int sumb; while(cin>>n){ int i=0; memset(c,0,sizeof(c)); suma=0;sumb=0; for( i=0;i>a[i];suma+=a[i];} for( i=原创 2010-08-22 17:47:00 · 385 阅读 · 0 评论 -
joj2689
#includeusing namespace std;int n,m;int a[115][115];int c[115];int b[115];//int max_array(int* p,int m){ memset(c,0,sizeof(c)); c[0]=p[0]; for(int i=1;i {if(c[i-1] c[i]=p[i]; else c[i]=c[i-1]+p[i]; } int原创 2010-08-21 16:34:00 · 308 阅读 · 0 评论 -
最大子矩阵模板
#include using namespace std; int ** a; int **sum; int max_array(int *a,int n){ int *c = new int [n]; int i =0; c[0] = a[0]; for(i=1;i { if(c[i-1] c[i] = a[i]; else转载 2010-08-21 14:13:00 · 416 阅读 · 0 评论 -
poj1458
dp经典(Common Subsequence)算法可以改进,但我不会!!!原创 2010-08-13 16:27:00 · 462 阅读 · 0 评论 -
hdoj1160
粗心=====丑行原创 2010-08-13 17:02:00 · 418 阅读 · 0 评论 -
poj1887
<br />很简单的dp,但是题意难理解;<br />本人一开始以为是求最长的(连续的)的降序列!!!悲剧,但其实是不用连续!!!<br /> <br />#include<iostream><br />using namespace std;<br />int a[100000],d[100000];<br />int main(){<br /> int m=1;<br /> while(1){<br /> int temp;<br /> cin>>temp;<br原创 2010-08-13 11:13:00 · 547 阅读 · 0 评论 -
hdoj2084
关键字:状态+状态转移方程!!!原创 2010-08-12 16:49:00 · 459 阅读 · 0 评论 -
01背包求最优策略
被这个01背包的策略害惨了,看背包九讲,一直没看懂他的伪代码,主要是对伪代码不太了解,ru: i=N v=V while(i>0) if(g[i][v]==0) print "未选第i项物品" else if(g[i][v]==1) print "选了第i项物品" v=v-c[i]/*他的位置和print对其,这他就属于原创 2011-06-09 21:32:00 · 629 阅读 · 0 评论